DevOps - Docker环境搭建图文教程 - Docker Swarm篇

Docker是开源的应用容器引擎,能很好地支持DevOps中相当重要的云计算,为了搭建完整的应用级别的Docker环境,我们一起开始探索吧。

本篇知识点如下,将分为三部分来介绍:

Registry(v2)

Shipyard

Docker Swarm(本篇)


DevOps - Docker环境搭建图文教程 - Docker Swarm篇_第1张图片
DevOps - Docker环境搭建图文教程 - Docker Swarm篇_第2张图片

先来看两张图

Docker Swarm是用于创建Docker主机(运行Docker守护进程的服务器)集群的工具,使用Swarm操作集群,会使用户感觉就像是在一台主机上进行操作。

在我们演示之前,请准备:至少2台可以互相联网的机器,并安装好Docker 1.12或以上版本。

1 初始化 Swarm

在一台机器上,通过运行init命令,初始化一个Leader(默认端口:2377)

DevOps - Docker环境搭建图文教程 - Docker Swarm篇_第3张图片

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

2 加入集群

在其他机器上通过运行 docker swarm join 命令来加入一个集群,token在第1步中查看

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 来查看服务的运行状态

服务状态
在其中一台主机上运行 docker ps -a 查看
在另一台主机上运行 docker ps -a 查看

可以看到在第一台主机上,有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

DevOps - Docker环境搭建图文教程 - Docker Swarm篇_第4张图片
运行扩展命令后可以快速验证

使用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 service ls, docker ps -a 来验证

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

你可能感兴趣的:(DevOps - Docker环境搭建图文教程 - Docker Swarm篇)