文章目录
Docker Swarm集群
2.1 Docker Swarm概述
概述,请大家点开此链接进行查看,这位博主写的非常详细。[https://blog.csdn.net/anumbrella/article/details/80369913]
2.2 Dockers Swarm使用
2.2.1 环境搭建
-
准备3台Ubuntu系统主机(即用于搭建集群的3个Docker机器),每台机器上都需要安装Docker并且可以连接网络,同时要求Docker版本必须是1.12及以上,因为老版本不支持Docker Swarm
-
集群管理节点Docker机器的IP地址必须固定,集群中所有节点都能够访问该管理节点。
-
集群节点之间必须使用相应的协议并保证其以下端口可用:
-
用于集群管理通信的TCP端口2377;
-
TCP 和UDP 端口7946,用于节点间的通信;
-
UDP 端口 4789,用于覆盖网络流量
为了进行本实例演示,此处按照要求安装了3台使用ubuntu16.04系统的机器,这三台机器的主机名称分别为manager1(作为管理节点),worker1(作为工作节点),worker2(作为工作节点),其IP地址分别如下:
主机名 IP地址 manager1 192.168.197.143 worker1 192.168.197.144 worker2 192.168.197.145
-
2.2.2 创建 Docker Swarm 集群
-
在名为manager1的Docker的Docker机器上创建Docker Swarm集群,具体操作指令如下。
sudo docker swarm init --advertise-addr 192.168.197.143
-
在管理节点上,使用docker node ls 指令查看集群节点信息
sudo docker node ls
2.2.3 向 Docker Swarm集群添加工作节点
-
启动另外两台Docker机器worker1和worker2,分别打开终端窗口,执行向集群中加入工作节点的指令,具体操作指令如下。
sudo docker swarm join --token SWMTKN-1-2l5ldta6kir8ybimpfhzf32t3vnu2m7gl7u70zrdarzq7f8461-9t4v8i43jrh8pgvlorxviwabw 192.168.197.143:2377
-
再次在集群管理节点上使用docker node ls指令查看集群节点信息
sudo docker node ls
2.2.4 向 Docker Swarm集群部署服务
在向Docker Swarm集群中部署服务时,既可以使用Docker Hub上自带的镜像来启动服务,也可以使用自己通过Dockerfile的镜像来启动服务,如果使用自己通过的Dockerfile构建的镜像来启动服务那么必须先将镜像推送到Docker Hub中心仓库
为了便于读者学习,这里以使用Docker Hub上自带的alpine镜像为例来部署集群服务,具体指令如下:
sudo docker service create --replicas 1 --name helloworld alpine ping docker.com
2.2.5 查看Docker Swarm 集群中的服务
-
当服务部署完成后,在管理节点上可以通过docker service ls指令查看当前集群中的服务列表信息,具体指令如下.
sudo docker service ls
-
可以使用docker service inspect指令,查看部署的服务具体详情,具体操作指令如下。
sudo docker service inspect helloworld
-
可以使用docker service ps 指令查看指定服务在集群节点上的分配和运行情况,具体操作指令如下。
sudo docker service ps helloworld
2.2.6 更改 Docker Swarm 集群服务样本数量
在集群中部署的服务,如果只运行一个副本,就无法体现出集群的优势,并且一旦该机器或副本奔溃,该服务将无法访问,所以通常一个服务会启动多个服务副本。
在管理节点manager1上,更改服务副本数量指令如下。
sudo docker service scale helloworld=5
更改完成之后,就可以使用docker service ps 指令查看这5个服务副本在3个节点上的具体分布和运行情况。
2.2.7 删除服务
对不需要的服务,我们可以进行删除,具体操作指令如下。
sudo docker service rm helloworld
在集群管理节点manage1上执行上述删除服务指令后(需要指定删除服务的名称),该服务就会在集群中彻底删除。
2.2.8 访问服务
-
在集群管理节点manager1上,执行docker network ls指令查看网络列表,效果如下图。
-
在集群管理节点manager1上,创建以overlay为驱动的自定义网络,具体指令如下。
sudo docker network create --driver overlay my-multi-host-network
-
在集群管理节点manager1上,再次部署服务,具体操作指令如下。
sudo docker service create --network my-multi-host-network --name my-web --publish 8080:80 --replicas 2 nginx
-
在集群管理节点manager1上,使用docker service ps my-web指令查看服务的两个副本运行情况,结果如下图所示。
sudo docker service ps my-web
-
外界访问服务。