docker容器中的三剑客是什么
更新:HHH   时间:2023-1-7


docker容器中的三剑客是swarm、compose和machine,这篇文章将给大家详细介绍swarm、compose和machine的安装和使用。希望大家根据这篇文章可以有所收获。

Docker swarm集群三剑客之一
Docker          docker2             docker3
192.168.1.1     192.168.1.20            192.168.1.30

关闭防火墙,与selinux。3台dockerhost添加dns域名解析区别主机名。
Bash   或重启

[root@docker ~]# ping docker2
Ping域名是否可以通。(时间同步)

Docker版本必须是:v1.12版本开始。

实验:

1)  描述docker swarm的各节点的特性,总结swarm、node、manager node 、 worker node 和service的概念。

Swarm:作用运行docker engin(引擎)的多个主机组成的集群。
Node:每一个docker engin都是一个node(节点),分为manager和worker。

Manager node:负责执行容器的编排和集群的管理工作,保持并维护swarm处于期望的状态。Swarm可以有多个manager node,他们会自动协调并选举一个leader执行编排任务。但相反,不能没有manager node。

Worker node:接收并执行有manager node 派发的任务,并且默认manager node也是一个work node,不过可以将他设置为manager-only node。让它只负责编排和管理工作。

Service:用来定义worker上执行的命令。

可以没有worker node 但不能没有Manager node

2)部署一个swarm集群,要求3台dockerhost,docker01为manager node,02和03为worker node.

1》初始化集群
[root@docker ~]# docker swarm init --advertise-addr 192.168.1.10
//--advertise-addr:指定与其他node通信的地址。
保存令牌(令牌只能保存24小时)

上边返回的结果告诉我们:初始化成功,并且如果想要添加work节点运行下面的命令:
docker swarm join --token SWMTKN-1-0blimv9lspg990gyt0l9knlpvcxx6xioyqh7p6mxkuxvckui9t-149nryrras3u9vr52n0nc14ui 192.168.1.1:2377
注意:token只有24小时的有效期。
如果想要添加manager节点:运行下边命令
docker  swarm join-toker manager

当其他两个节点加入成功,我们可以指定docker node ls 查看节点详情。
查看节点信息
[root@docker ~]# docker node ls

这个星代表所在的终端:

申请离开集群:(docker2,docker3)
[root@docker2 ~]# docker swarm leave  :(申请离开一个集群之后查看节点状态会变成down,然后可以通过manager node将其删除)
Node left the swarm.
[root@docker3 ~]# docker swarm leave
Node left the swarm.

删除某节点
[root@docker ~]# docker  node rm docker2
docker2
[root@docker ~]# docker  node rm docker3
docker3

3)将02和03提升为manager node,然后再将02和03恢复到worker node。 如果此时将01降级为worker  node,问是否可以。(不可以)

生成令牌:可以是manager身份或worker身份
[root@docker ~]# docker swarm  join-token manager |worker
To add a manager to this swarm, run the following command:

docker swarm join --token SWMTKN-1-0blimv9lspg990gyt0l9knlpvcxx6xioyqh7p6mxkuxvckui9t-e7en15s0hzdibnuj1dnp0hwd4 192.168.1.1:2377

docker node demote  :降职:将swarm节点的manager降级为worker
docker node promote  :升职:将swarm节点的worker升级为manager
4)部署一个servcie服务,要求使用httpd镜像,名称为test.要求8个副本数量。并且swarm集群要求:manager 节点不参加工作

2部署docker swarm集群网络
Overlay :覆盖型网络:
[root@docker ~]# docker network create -d overlay  --attachable docker
mjzqlj8edarzxkiqayr0e5ib9

//attachable:这个参数必须添加,否则不能用于容器。
在创建网络的时候,我们并没有部署一个存储服务,比如consul,那是因为docker swarm自带存储。

3》部署一个图形化web UI界面。
以容器的方式去运行
导入镜像包: myvisualizer.tar
[root@docker ~]# docker load < myvisualizer.tar

docker run -d  -p 8080:8080 -e HOST=192.168.1.1 -e PORT=8080 -v /var/run/docker.sock:/var/run/docker.sock  --name visualizer dockersamples/visualizer:latest

然后通过浏览器fangwen验证
如果访问不到,需开启路由转发

[root@docker ~]# echo net.ipv4.ip_forward = 1 >> /etc/sysctl.conf 
[root@docker ~]# sysctl -p
net.ipv4.ip_forward = 1

4》创建service(服务)
导入nginx.tar镜像包
[root@docker ~]# docker load < nginx.tar

[root@docker ~]#  docker service create  --replicas 1 --network docker --name web2 -p 80 nginx:latest
[root@docker ~]# docker  service  ps web2

//--replicas:副本数量。
大概可以理解为:一个副本等同一个容器
//查看service:
docker service  ls
//查看service信息:
docker service  ps  XXX
创建5个副本(容器)
[root@docker ~]# docker service create  --replicas 5 --network docker --name web -p 80 nginx:latest
删除副本
[root@docker ~]# docker service rm web1

就算本地有镜像,也会上网查找最新的nginx镜像。
[root@docker ~]# docker service scale  web=8
Scale:扩容

("active"|"pause"|"drain")活动/暂停/不参加
//设置manager node不参加
[root@docker ~]# docker node update docker --availability drain

5》搭建私有仓库。
之前的文章有,这里就不多说了:
6》自定义镜像
要求:基于httpd镜像,更改主访问界面内容。镜像tag版本为v1。

[root@docker ~]# mkdir  {v1,v2,v3}
[root@docker v1]# vim index.html
[root@docker v1]# vim Dockerfile
FROM httpd
ADD index.html /usr/local/apache2/htdocs/index.html

[root@docker v1]# docker build  -t 192.168.1.1:5000/httpd:v1 .
[root@docker v1]# docker push 192.168.1.1:5000/httpd:v1 

**v2**
[root@docker v1]# cd ../v2
[root@docker v2]# ls
[root@docker v2]# echo 22222 > index.html
[root@docker v2]# cat > Dockerfile << EOF
> FROM  httpd
> ADD index.html /usr/local/apache2/htdocs/index.html
> EOF
[root@docker v2]# docker build -t 192.168.1.1:5000/httpd:v2 .

**v3**
[root@docker v3]# echo 33333333 >index.html
[root@docker v3]# cat > Dockerfile << EOF
> FROM  httpd
> ADD index.html /usr/local/apache2/htdocs/index.html
> EOF
[root@docker v3]# docker build -t 192.168.1.1:5000/httpd:v3 .
Sending build context to Docker daemon  3.072kB
Step 1/2 : FROM  httpd
 ---> ff0f8d389b3a
Step 2/2 : ADD index.html /usr/local/apache2/htdocs/index.html
 ---> 0bdecd412589
Successfully built 0bdecd412589
Successfully tagged 192.168.1.1:5000/httpd:v3

7.发布一个服务,基于上述镜像

要求:副本数量为3个。服务的名称为bdqn
[root@docker ~]# docker service create --replicas 3  --name bdqn -p 80:80  192.168.1.1:5000/httpd:v1
默认的ingress网络,包括创建的自定义网络,为后端真正为用户提供服务的container,提供了一个统一的入口。

docker service create --replicas 3  --name test -p 80  192.168.1.1:5000/httpd:v1

***服务的扩容与缩容(scale)
30000-32767
[root@docker ~]# docker service  scale  bdqn=6
扩容与缩容可以直接通过scale进行设置副本数量
服务的升级与回滚
[root@docker ~]# docker service update --image  192.168.1.1:5000/httpd:v2 bdqn
//平滑的更新
[root@docker ~]# docker service update --image 192.168.1.1:5000/httpd:v3 --update-parallelism 2 --update-delay 1m bdqn

PS:默认情况下,swarm,一次只更新一个副本,并且两个副本之间没有等待时间,我们可以通过,
--update-parallelism 2:设置并进行更新的副本数量
--update-delay :指定滚动更新的时间间隔
 docker service  rollback  bdqn
回滚:操做。
Ps:注意:docker swarm的回滚操做,默认只能回滚到上一次操做的状态,并不能连续回滚操做。*

看完上述内容,你们对docker容器中的三剑客有进一步的了解吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注天达云行业资讯频道,感谢各位的阅读。

返回云计算教程...