Java分布式微服务3——Docker

文章目录

  • Docker介绍
  • 安装Docker
  • Docker基础操作
    • Docker服务的启动
    • 镜像命令
    • 容器命令
      • 1. 从docker hub去查看Nginx容器的运行命令
      • 2. 查看所有容器状态
      • 3. 查看容器日志
      • 4. 进入Nginx容器执行命令,修改Html内容,添加“Hello World”
      • 5. 停止与开始容器
      • 6. 删除容器
    • 数据卷
      • 1. 为什么需要数据卷
      • 2. 数据卷的操作
      • 3. 数据卷的挂载
      • 4. 目录与文件挂载
  • Dockerfile自定义镜像
  • DockerCompose集群部署
  • 镜像仓库
    • 1.简化版镜像仓库
    • 2.带有图形化界面版本
    • 3.配置Docker信任地址

Docker介绍

大项目组件多,运行环境复杂

  • 每个组件需要的依赖和函数库可能版本不同,容易不兼容
  • 开发、测试、生产环境有差异,甚至操作系统都不一样

在这里插入图片描述
Docker可以在任何Linux机器上一键部署,一键移除

Docker与虚拟机区别
在这里插入图片描述

  • Docker直接用打包的系统函数库调用OS内核,性能较好,硬盘占用小,启动快
  • 虚拟机需要用函数库调用模拟的OS,指令经过Hypevisor转换后调用真正OS的内核,性能一般,硬盘占用大,启动慢

在这里插入图片描述
DockerRegistry: 镜像托管服务器,DockerHub、阿里云镜像

安装Docker

Docker安装和配置

Docker基础操作

Docker服务的启动

systemctl enable docker # 开机自启
service start docker

在命令后加上--help就能打开帮助文档

镜像命令

在这里插入图片描述
官方镜像拉取参考DockerHub网站
下面我们要:

  1. 拉取一个nginx镜像
  2. 查看镜像
  3. 将其保存成tar
  4. 删除dokcer中的nginx镜像
  5. 从tar中加载这个镜像
  6. 对这个镜像打标签说明这是我们开发的第一个版本
docker pull nginx[:tag] # 拉取镜像,不指定版本就自动拉取最新版,tag为latest
docker images # 查看镜像
docker save -o nginx.tar nginx:latest # 保存镜像到tar压缩文件,-o是output,后面跟要保存到的文件名
docker rmi nginx:latest# 删除镜像
docker load -i nginx.tar# 加载刚刚保存的镜像,-i是input,后面跟镜像压缩包文件名
docker tag nginx:latest mynginx:1.0 # 给一个镜像打标签为mynginx:1.0

容器命令

在这里插入图片描述
下面我们要:

1. 从docker hub去查看Nginx容器的运行命令

容器一开始是完全隔离的,端口映射就是暴露一个接口(可以理解成和宿主机之间接了条通道,只有宿主机能把请求给它)
容器端口一般取决于应用本身很少变化,宿主机端口可以任意指定可用的
具体怎么启动建议在DockerHub中搜索

docker run --name mynginx -p 80:80 -d nginx

在这里插入图片描述

2. 查看所有容器状态

默认只能查看到未被停止的,加-a能看到所有

docker ps

在这里插入图片描述

3. 查看容器日志

docker logs mynginx # 查看日志
docker logs -f mynginx # 持续跟踪显示日志,-f=follow

4. 进入Nginx容器执行命令,修改Html内容,添加“Hello World”

实际工作中不建议在容器内修改文件

  • docker exec: 进入容器内部,执行一个命令
  • -it = interaction terminal 给当前进入的容易创建一个标准输入输出终端
  • bash是这里进入容器后要执行的命令,它本身是一个指令处理器
docker exec -it mynginx bash

docker容器里有一套自己的简易文件系统
找到nginx的html页面并打开查看

cd /usr/share/nginx/html/
cat index.html

修改html内容

sed -i 's#Welcome to nginx#Hello World#g' index.html
sed -i 's#<head>#<head><meta charset="utf-8>#g' index.html

5. 停止与开始容器

docker stop mynginx
docker start mynginx

6. 删除容器

docker rm mynginx # 要先停止容器
docker rm -f mynginx # 强制删除

数据卷

1. 为什么需要数据卷

在这里插入图片描述
怎么修改容器中的文件呢?

  • 使用一个虚拟目录交给容器使用,实际上对应的是宿主机的一个真实目录。
  • 如果多个虚拟目录挂载在同一个真实目录上,还能完成文件共享
  • 就算容器被删了,文件还是在宿主机文件夹里
    在这里插入图片描述

2. 数据卷的操作

  1. 创建数据卷
docker volume create myvolume
  1. 列出所有数据卷
docker volume ls
  1. 查看数据卷详细信息
docker volume inspect myvolume

在这里插入图片描述

  1. 删除未使用的数据卷
docker volume prune
  1. 删除指定数据卷
docker volume rm myvolume

3. 数据卷的挂载

创建容器的时候通过-v参数将一个数据卷挂载到某个容器目录,如果没有这个数据卷会自动创建一个

docker run\--name mn\-v myvolume:/usr/share/nginx/html\ # 把myvolume数据卷挂载到容器内的/usr/share/nginx/html这个目录上-p 80:80\nginx

4. 目录与文件挂载

也可以直接把宿主机目录挂载到某个容器目录

在这里插入图片描述
挂载文件会直接覆盖容器内的文件

Dockerfile自定义镜像

分层方便迭代,只用改上面几层
在这里插入图片描述
在这里插入图片描述

DockerCompose集群部署

可以基于Compose文件快速部署分布式应用,无需手动逐个创建和运行容器
Compose文件是个文本文件夹,通过指令定义集群中每个容器如何运行,内容约等于多个docker run的集合
详情参考官网DockerCompose文档
在这里插入图片描述

安装dockerCompose

使用DockerCompose部署微服务
最好先自己部署好Nacos再一键部署其他微服务,否则找不到地方注册

镜像仓库

仓库也可以自己建私有仓库
搭建镜像仓库可以基于Docker官方提供的DockerRegistry来实现。

官网地址:https://hub.docker.com/_/registry

1.简化版镜像仓库

Docker官方的Docker Registry是一个基础版本的Docker镜像仓库,具备仓库管理的完整功能,但是没有图形化界面。

搭建方式比较简单,命令如下:

docker run -d \--restart=always \--name registry	\-p 5000:5000 \-v registry-data:/var/lib/registry \registry

命令中挂载了一个数据卷registry-data到容器内的/var/lib/registry 目录,这是私有镜像库存放数据的目录。

访问http://YourIp:5000/v2/_catalog 可以查看当前私有镜像服务中包含的镜像

2.带有图形化界面版本

使用DockerCompose部署带有图象界面的DockerRegistry,命令如下:

version: '3.0'
services:registry:image: registryvolumes:- ./registry-data:/var/lib/registryui:image: joxit/docker-registry-ui:staticports:- 8080:80environment:- REGISTRY_TITLE=私有仓库- REGISTRY_URL=http://registry:5000depends_on:- registry

3.配置Docker信任地址

我们的私服采用的是http协议,默认不被Docker信任,所以需要做一个配置:

# 打开要修改的文件
vi /etc/docker/daemon.json
# 添加内容:
"insecure-registries":["http://192.168.150.101:8080"]
# 重加载
systemctl daemon-reload
# 重启docker
systemctl restart docker

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/86262.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

01 - 工作区、暂存区、版本库、远程仓库 - 以一次连贯的提交操作为例

1. 工作区、暂存区、版本库、远程仓库 以一次连贯的提交操作为例。 1.1 工作区 Git的工作区也就是我们平时编辑代码的目录文件夹。 新建一个kongfu_person.txt文件&#xff0c;工作区的变化&#xff1a; 1.2 工作区 > 暂存区&#xff1a;git add 1.3 暂存区 > 版本库…

配置docker,案例复现

配置docker(系统为centos) 1.检查操作系统环境: docker要求CentOS系统的内核版本高于 3.10 &#xff0c;通过 uname -r 命令查看你当前的内核版本是否支持安装docker 2.查看你是否拥有旧的版本&#xff0c;有的话卸载&#xff0c;没有的话直接略过该步骤 sudo yum remove d…

pytest结合 allure 打标记之的详细使用

前言 前面我们提到使用allure 可以生成漂亮的测试报告&#xff0c;下面就Allure 标记我们做详细介绍。 allure 标记 包含&#xff1a;epic&#xff0c;feature, story, title, testcase, issue, description, step, serverity, link, attachment 常用的标记 allure.feature…

C语言笔试训练【第九天】

文章目录 &#x1f47f;1、下列程序的输出是&#xff08; &#xff09;&#x1f48e;2、二维数组X按行顺序存储&#xff0c;其中每个元素占1个存储单元。若 X[4][4] 的存储地址为 Oxf8b82140 , X[9][9] 的存储地址为 Oxf8b8221c ,则 X[7][7] 的存储地址为&#xff08; &#xf…

29 | 广州美食店铺数据分析

广州美食店铺数据分析 一、数据分析项目MVP加/价值主张宣言 随着经济的快速发展以及新媒体的兴起,美食攻略、美食探店等一系列东西进入大众的眼球,而人们也会在各大平台中查找美食推荐,因此本项目做的美食店铺数据分析也是带有可行性的。首先通过对广东省的各市美食店铺数量…

软件单元测试

单元测试目的和意义 对于非正式的软件&#xff08;其特点是功能比较少&#xff0c;后续也不有新特性加入&#xff0c;不用负责维护&#xff09;&#xff0c;我们可以使用debug单步执行&#xff0c;内存修改&#xff0c;检查对应的观测点是否符合要求来进行单元测试&#xff0c…

Lorenz系统最大lyapunov exponent的求解

首先看下Lorenz混沌系统: 赋予初始值,例如: 当然,初始值可以根据需要设定。 看下他的吸引子,很美: 看下他的分叉图:

如何微调优化你的ChatGPT提示来提高对话质量

ChatGPT会话质量很大程度上取决于微调优化提示的艺术。本文旨在阐明微调提示的复杂性&#xff0c;以确保你可以充分发挥ChaGPT这一颠覆性工具的潜力。 与ChatGPT对话的关键部分是“提示”。即&#xff1a;你输入的问题或陈述&#xff0c;它决定了人工智能的响应。类似于引导对…

使用requests如何实现自动登录

不知道大家有没有注意到&#xff0c;好多网站我们登录过后&#xff0c;在之后的某段时间内访问该网页时&#xff0c;不会给出请登录的提示&#xff0c;时间到期后就会提示请登录&#xff01;这样在使用爬虫访问网页时还要登录&#xff0c;打乱我们的节奏&#xff0c;那么如何使…

C#,数值计算——抛物线插值与Brent方法(Parabolic Interpolation and Brent‘s Method)的计算方法与源程序

using System; namespace Legalsoft.Truffer { /// <summary> /// 抛物线插值与Brent方法 /// Parabolic Interpolation and Brents Method /// </summary> public class Brent : Bracketmethod { public double xmin { get; set…

Reinforcement Learning with Code【Code 5. Policy Gradient Methods】

Reinforcement Learning with Code【Code 5. Policy Gradient Methods】 This note records how the author begin to learn RL. Both theoretical understanding and code practice are presented. Many material are referenced such as ZhaoShiyu’s Mathematical Foundati…

Kotlin~Mediator中介者模式

概念 创建一个中介来降低对象之间的耦合度&#xff0c;关系”多对多“变为“一对多”。 角色介绍 Mediator&#xff1a;抽象中介者&#xff0c;接口或者抽象类。ConcreteMediator&#xff1a;中介者具体实现&#xff0c;实现中介者接口&#xff0c;定义一个List管理Colleagu…

制造业企业数字化转型之设备数据采集

导 读 ( 文/ 1894 ) 随着信息技术的快速发展和制造业的转型升级&#xff0c;企业数字化转型已成为保持竞争力和实现可持续发展的关键。在数字化转型过程中&#xff0c;设备数据采集作为重要的一环&#xff0c;发挥着关键的作用。设备数据采集通过收集、分析和利用设备所产生的数…

激活函数总结(六):ReLU系列激活函数补充(RReLU、CELU、ReLU6)

激活函数总结&#xff08;六&#xff09;&#xff1a;ReLU系列激活函数补充 1 引言2 激活函数2.1 RReLU激活函数2.2 CELU激活函数2.3 ReLU6 激活函数 3. 总结 1 引言 在前面的文章中已经介绍了介绍了一系列激活函数 (Sigmoid、Tanh、ReLU、Leaky ReLU、PReLU、Swish、ELU、SEL…

PHP 求解两字符串所有公共子序列及最长公共子序列 支持多字节字符串

/*** 获取两字符串所有公共子序列【不连续的】 例&#xff1a;abc ac > ac** param string $str1 字符串1* param string $str2 字符串2** return array*/ function public_sequence(string $str1, string $str2): array {$data [[-1, -1, , 0, ]]; // 子序列容器【横坐标 …

喜报!诚恒科技与赛时达科技达成BI金蝶云星空项目合作

随着全球数字化浪潮轰轰烈烈袭来&#xff0c;仅仅凭借手工处理的方式难以在庞大的数据海洋中精准获取信息、把握市场需求、了解目标用户&#xff0c;为企业创新提供强有力的支持。深圳赛时达科技有限公司&#xff08;简称赛时达科技&#xff09;希望通过数字化转型实现从手工处…

StarRocks企业级数据库

第1章 StarRocks简介 1.1 StarRocks介绍 StarRocks是新一代极速全场景MPP数据库 StraRocks充分吸收关系型OLAP数据库和分布式存储系统在大数据时代的优秀研究成果&#xff0c;在业界实践的基础上&#xff0c;进一步改进优化、升级架构&#xff0c;并增添了众多全新功能&…

06-2_Qt 5.9 C++开发指南_自定义对话框及其调用

本篇介绍到的对话框及其调用实例较为复杂但十分详细&#xff0c;如果做了解可以先参考&#xff1a;QT从入门到实战x篇_13_模态和非模态对话框创建。 文章目录 1. 对话框的不同调用方式2. 对话框QWDialogSize 的创建和使用2.1 创建对话框QWDialogSize2.2 对话框的调用和返回值 …

PE启动盘和U启动盘(第三十六课)

PE启动盘和U启动盘(第三十六课) 一 WindowsPE工具盘 1. 制作WinPE镜像光盘 双击WePE64_V2.2-是-点击右下角光盘图标-选择ISO的输出位置-立即生成ISO 2. 通过光盘启动WinPE

Android平台GB28181设备接入端如何实现多视频通道接入?

技术背景 我们在设计Android平台GB28181设备接入模块的时候&#xff0c;有这样的场景诉求&#xff0c;一个设备可能需要多个通道&#xff0c;常见的场景&#xff0c;比如车载终端&#xff0c;一台设备&#xff0c;可能需要接入多个摄像头&#xff0c;那么这台车载终端设备可以…