本站已运行

攻城狮论坛

作者: 田埂上的梦
查看: 848|回复: 10

主题标签Tag

more +今日重磅推荐Recommend No.1

所有IT类厂商认证考试题库下载所有IT类厂商认证考试题库下载

more +随机图赏Gallery

【新盟教育】2023最新华为HCIA全套视频合集【网工基础全覆盖】---国sir公开课合集【新盟教育】2023最新华为HCIA全套视频合集【网工基础全覆盖】---国sir公开课合集
【新盟教育】网工小白必看的!2023最新版华为认证HCIA Datacom零基础全套实战课【新盟教育】网工小白必看的!2023最新版华为认证HCIA Datacom零基础全套实战课
原创_超融合自动化运维工具cvTools原创_超融合自动化运维工具cvTools
重量级~~30多套JAVA就业班全套 视频教程(请尽快下载,链接失效后不补)重量级~~30多套JAVA就业班全套 视频教程(请尽快下载,链接失效后不补)
链接已失效【超过几百G】EVE 国内和国外镜像 全有了 百度群分享链接已失效【超过几百G】EVE 国内和国外镜像 全有了 百度群分享
某linux大佬,积累多年的电子书(约300本)某linux大佬,积累多年的电子书(约300本)
乾颐堂现任明教教主Python完整版乾颐堂现任明教教主Python完整版
乾颐堂 教主技术进化论 2018-2019年 最新31-50期合集视频(各种最新技术杂谈视频)乾颐堂 教主技术进化论 2018-2019年 最新31-50期合集视频(各种最新技术杂谈视频)
Python学习视频 0起点视频 入门到项目实战篇 Python3.5.2视频教程 共847集 能学102天Python学习视频 0起点视频 入门到项目实战篇 Python3.5.2视频教程 共847集 能学102天
约21套Python视频合集 核心基础视频教程(共310G,已压缩)约21套Python视频合集 核心基础视频教程(共310G,已压缩)
最新20180811录制 IT爱好者-清风羽毛 - 网络安全IPSec VPN实验指南视频教程最新20180811录制 IT爱好者-清风羽毛 - 网络安全IPSec VPN实验指南视频教程
最新20180807录制EVE开机自启动虚拟路由器并桥接物理网卡充当思科路由器最新20180807录制EVE开机自启动虚拟路由器并桥接物理网卡充当思科路由器

[文档] 19. Docker的Swarm模式

[复制链接]
查看: 848|回复: 10
开通VIP 免金币+免回帖+批量下载+无广告

Docker Swarm是原生的Docker集群工具。在Docker版本1.12之后,Docker引擎加入了Swarm模式,将Swarm集成进来。大多数用户应该使用集成进Docker引擎的Swarm模式。单独的Docker Swarm仍然可用,只是它没有集成进Docker引擎的API和CLI命令当中。

在文章“使用Swarm进行Docker集群的部署”中,我们探索了如何通过Docker Swarm镜像部署Docker集群。随着Docker的不断开发,在版本1.12之后,Docker引擎加入了Swarm模式,用户可以通过原生的Docker CLI命令操作Swarm集群。本篇就对这种Swarm模式进行简单的概览。更详细的信息可以参考官方文档

本篇使用的环境包括3个节点,一个作为Swarm的manager节点,两个为worker节点,机器名和IP地址如下:

[backcolor=white !important][size=1em]
1

2

3

centos 7 :  192.168.71.131 (Swarm manager)

centos7-A: 192.168.71.167 (Swarm worker)

centos7-B: 192.168.71.168 (Swarm worker)




在三台主机上,都安装了Docker引擎1.12版,并且主机相互之间可以ping通,主机上的2377,7946,4789端口都打开。

1.创建swarm
  • 1.1 下面开始创建swarm。登录到centos7主机上,执行如下命令:
[backcolor=white !important][size=1em]
1

2

3

4

5

6

7

8

9

10

[yangdong@centos7 ~]$ docker swarm init --advertise-addr 192.168.71.131

Swarm initialized: current node (41atspd62he1vshs4jmhpyufj) is now a manager.


To add a worker to this swarm, run the following command:


    docker swarm join \

    --token SWMTKN-1-49ueborzkg0v6l3xu2g1d5zfgsjn1xobqvctwozq14m07n1ak0-2llwi551ii09zeyus5r3zi3un \

    192.168.71.131:2377


To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.




--advertise-addr参数表示其它swarm中的worker节点使用此ip地址与manager联系。命令的输出包含了其它节点如何加入集群的命令。
使用docker info和docker node ls查看集群中的相关信息:

[backcolor=white !important][size=1em]
1

2

3

4

5

6

7

8

9

10

11

12

13

14

[yangdong@centos7 ~]$ docker info

...

Swarm: active

NodeID: 41atspd62he1vshs4jmhpyufj

Is Manager: true

ClusterID: 5nl0kyz1dfmkgg2sx04vr8zoi

Managers: 1

Nodes: 1

Orchestration:

Task History Retention Limit: 5

...

[yangdong@centos7 ~]$ docker node ls

ID                           HOSTNAME  STATUS  AVAILABILITY  MANAGER STATUS

41atspd62he1vshs4jmhpyufj *  centos7   Ready   Active        Leader




node ID旁边那个*号表示现在连接到这个节点上。

2. 将节点加入swarm
  • 2.1 登录到centos7-A主机上,执行前面创建swarm时输出的命令
[backcolor=white !important][size=1em]
1

2

3

4

[yangdong@centos7-A ~]$     docker swarm join \

>     --token SWMTKN-1-49ueborzkg0v6l3xu2g1d5zfgsjn1xobqvctwozq14m07n1ak0-2llwi551ii09zeyus5r3zi3un \

>     192.168.71.131:2377

This node joined a swarm as a worker.




如果当时创建swarm时没有记下命令的输出,可以通过在manager节点上运行docker swarm join-token worker命令来获取如何加入swarm的命令。
在另一台主机centos7-B上也执行相同的命令,最后在manager节点上看一下集群节点的状态:

[backcolor=white !important][size=1em]
1

2

3

4

5

[yangdong@centos7 ~]$  docker node ls

ID                           HOSTNAME   STATUS  AVAILABILITY  MANAGER STATUS

0b57ews522yiz8xyhy3jz34ci    centos7-B  Ready   Active        

41atspd62he1vshs4jmhpyufj *  centos7    Ready   Active        Leader

d1lurs40mlah70spbetcsl9rw    centos7-A  Ready   Active        




3. 在Swarm中部署服务
  • 3.1 在centos7也就是manager节点上运行如下命令来部署服务
[backcolor=white !important][size=1em]
1

2

[yangdong@centos7 ~]$ docker service create --replicas 1 --name helloworld alpine ping docker.com

50r6d8w4cwzi45s8865p9pdn4




--replicas参数指定服务由几个实例组成。最后的命令行参数alpine ping docker.com指定了使用alpine镜像创建服务,实例启动时运行ping docker.com命令。这与docker run命令是一样的。
使用docker service ls查看正在运行服务的列表:

[backcolor=white !important][size=1em]
1

2

3

[yangdong@centos7 ~]$ docker service ls

ID            NAME        REPLICAS  IMAGE   COMMAND

50r6d8w4cwzi  helloworld  1/1       alpine  ping docker.com




4. 查询Swarm中服务的信息
  • 4.1 在部署了服务之后,登录到manager节点,运行下面的命令来显示服务的信息。参数--pretty使命令输出格式化为可读的格式,不加--pretty可以输出更详细的信息
[backcolor=white !important][size=1em]
1

2

3

4

5

6

7

8

9

10

11

12

13

[yangdong@centos7 ~]$ docker service inspect --pretty helloworld

ID:        50r6d8w4cwzi45s8865p9pdn4

Name:        helloworld

Mode:        Replicated

Replicas:    1

Placement:

UpdateConfig:

Parallelism:    1

On failure:    pause

ContainerSpec:

Image:        alpine

Args:        ping docker.com

Resources:




使用命令docker service ps <SERVICE-ID>可以查询到哪个节点正在运行该服务:

[backcolor=white !important][size=1em]
1

2

3

[yangdong@centos7 ~]$ docker service ps helloworld

ID                         NAME          IMAGE   NODE     DESIRED STATE  CURRENT STATE           ERROR

541qk5jdrb71ypna9y5zw2l33  helloworld.1  alpine  centos7  Running        Running 12 minutes ago




5. 在Swarm中动态扩展服务
  • 5.1 登录到manager节点,使用命令docker service scale <SERVICE-ID>=<NUMBER-OF-TASKS>来将服务扩展到指定的实例数
[backcolor=white !important][size=1em]
1

2

[yangdong@centos7 ~]$  docker service scale helloworld=5

helloworld scaled to 5




  • 5.2 再次查询服务的状态列表
[backcolor=white !important][size=1em]
1

2

3

4

5

6

7

[yangdong@centos7 ~]$ docker service ps helloworld

ID                         NAME          IMAGE   NODE       DESIRED STATE  CURRENT STATE           ERROR

541qk5jdrb71ypna9y5zw2l33  helloworld.1  alpine  centos7    Running        Running 16 minutes ago  

96s46qpl3qd94ntw3n2bt81m8  helloworld.2  alpine  centos7-B  Running        Running 17 seconds ago  

6p1u8hj4y31i4pjmwh8zvvf2h  helloworld.3  alpine  centos7-A  Running        Running 8 seconds ago   

02jn1fxkx8juwizk6fjgv9r9n  helloworld.4  alpine  centos7-A  Running        Running 9 seconds ago   

btbrvtnjjmgyb8emwmznziho9  helloworld.5  alpine  centos7    Running        Running 27 seconds ago  




可见Swarm创建了4个新的task来将整个服务的实例数扩展到5个。这些服务分布在不同的Swarm节点上。

6. 删除swarm中点服务
  • 6.1 在manager节点上运行docker service rm helloworld便可以将服务删除。删除服务时,会将服务在各个节点上创建的容器一同删除,而并不是将容器停止
  • 6.2 此外Swarm模式还提供了服务的滚动升级,将某个worker置为维护模式,及路由网等功能。在Docker将Swarm集成进Docker引擎后,可以使用原生的Docker CLI对容器集群进行各种操作,使集群的部署更加方便、快捷。
CCNA考试 官方正规报名 仅需1500元
回复 论坛版权

使用道具 举报

liaochao [Lv5 不断成长] 发表于 2016-12-5 21:54:04 | 显示全部楼层
沙发!沙发!沙发!
回复 支持 反对

使用道具 举报

condor88899 [Lv5 不断成长] 发表于 2016-12-5 22:06:05 | 显示全部楼层
路过,学习下,感谢攻城狮论坛
回复 支持 反对

使用道具 举报

lhbnet [Lv5 不断成长] 发表于 2016-12-5 22:16:05 | 显示全部楼层
帮你顶下哈!!
回复 支持 反对

使用道具 举报

haoz2004 [Lv5 不断成长] 发表于 2016-12-5 22:26:08 | 显示全部楼层
过来看看的,感谢攻城狮论坛
回复 支持 反对

使用道具 举报

kingse1 [Lv5 不断成长] 发表于 2016-12-5 22:46:11 | 显示全部楼层
学习了,不错,讲的太有道理了
回复 支持 反对

使用道具 举报

obbmjj [Lv5 不断成长] 发表于 2016-12-5 22:56:11 | 显示全部楼层
找到好贴不容易,我顶你了,谢了
回复 支持 反对

使用道具 举报

我是丹尼 [Lv5 不断成长] 发表于 2016-12-5 23:06:16 | 显示全部楼层
小手一抖,金币到手!
回复 支持 反对

使用道具 举报

Rockyw [Lv10 举世无双] 发表于 2016-12-6 11:58:39 | 显示全部楼层
路过了解一下
回复 支持 反对

使用道具 举报

jayden [Lv9 无所不能] 发表于 2016-12-6 19:38:33 | 显示全部楼层
看帖看完了至少要顶一下!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|无图浏览|手机版|网站地图|攻城狮论坛

GMT+8, 2025-5-24 09:36 , Processed in 0.112412 second(s), 16 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4 © 2001-2013 Comsenz Inc.

Designed by ARTERY.cn