Docker是开源的应用容器引擎,能很好地支持DevOps中相当重要的云计算,为了搭建完整的应用级别的Docker环境,我们一起开始探索吧。
本篇知识点如下,将分为三部分来介绍:
Docker Swarm(本篇)


先来看两张图
Docker Swarm是用于创建Docker主机(运行Docker守护进程的服务器)集群的工具,使用Swarm操作集群,会使用户感觉就像是在一台主机上进行操作。
在我们演示之前,请准备:至少2台可以互相联网的机器,并安装好Docker 1.12或以上版本。
1 初始化 Swarm
在一台机器上,通过运行init命令,初始化一个Leader(默认端口:2377)

若忘记token,可以运行以下命令查询manager的tokern

2 加入集群

3 在Leader机器上查看

4 创建服务
docker service create --name my_web --replicas 4 --publish 9001:80 nginx

稍微讲解一下参数
docker service create:创建服务的命令
--name my_web:指定服务的名字
--replicas 3:指定创建容器的实例数量
--publish 9001:80:将主机的9001端口映射到容器的80端口上
nginx:镜像名称
注意,可以在集群中任意一台机器上进行操作
运行完后,我们可以通过:docker service ls 来查看服务的运行状态



可以看到在第一台主机上,有my_web.2, my_web.3两个容器实例正在运行,而在另外一台主机上有my_web.1, my_web.4两个容器实例在运行(随机分配的)
5 Scale 横向扩展
在需要扩展服务里,可能通过 docker service update命令来进行操作:
docker service update my_web --replicas 5
这个命令将原来的my_web服务的实例数变成了:5

使用Docker Swarm的神奇之处在于,在任意一台主机上进行访问,都可以访问创建的nginx服务,原因是docker会在iptables中注册相应的端口,我们可以在任意主机上查看iptable来验证
iptables -nL --line-number
另一个使用Docker Swarm的神奇之处,是docker会帮我们管理容器,比如我们刚刚调整了容器的实例个数为:5,那docker swarm就会确保总是有5个可用的实例在运行,我们可以通过人为地停止某一个容器实例,过一会儿,我们就会发现,docker swarm帮我们创建了另外一个新的容器实例,补全了5个。而之前那个被中止的容器(尸体)还在,我们可以对其进行检查操作。
6 删除服务
最后,当我们不需要服务里,可以通过 docker service rm命令来移除服务

总之,Docker Swarm能非常方便地帮我们编排我们的容器实例,操作也相当的简单。
网友评论