DevOps - Docker环境搭建图文教程 - Docker
Docker是开源的应用容器引擎,能很好地支持DevOps中相当重要的云计算,为了搭建完整的应用级别的Docker环境,我们一起开始探索吧。
本篇知识点如下,将分为三部分来介绍:
Docker Swarm(本篇)
先来看两张图
Docker Swarm是用于创建Docker主机(运行Docker守护进程的服务器)集群的工具,使用Swarm操作集群,会使用户感觉就像是在一台主机上进行操作。
在我们演示之前,请准备:至少2台可以互相联网的机器,并安装好Docker 1.12或以上版本。
1 初始化 Swarm
在一台机器上,通过运行init命令,初始化一个Leader(默认端口:2377)
若忘记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
运行扩展命令后可以快速验证使用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能非常方便地帮我们编排我们的容器实例,操作也相当的简单。