实现Docker Swarm集群部署安装、在线创建Swarm集群和自动编配。
#hostnamectl set-hostname smoker
#hostnamectl set-hostname joker
(2)修改两个节点的/etc/hosts文件,在#后面输入vi /etc/hosts命令,然后按Enter键,编辑hosts文件。示例代码如下:
[root@smoker ~]# vi /etc/hosts
进入Vim编辑界面,在键盘上按i键进入编译模式,编辑内容如下:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
10.24.2.32 smoker
10.24.2.59 joker
编辑结束后,按ESC键进入末行模式,输入:wq命令,然后按Enter键,保存代码并退出。
在joker 节点编辑hosts 文件。在#后输入命令vi /etc/hosts命令,然后按Enter键。示例代码如下:
[root@joker ~]# vi /etc/hosts
进入Vim 编辑界面,在键盘上按i键进入编译模式,编辑内容如下:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
10.24.2.32 smoker
10.24.2.59 joker
编辑结束后,按ESC键进入末行模式,输入:wq命令,然后按Enter键,保存代码并退出。
(3)在smoker和joker节点分别修改docker的配置文件,在#后面输入# vi /etc/sysconfig/docker,然后按Enter键,示例代码如下所示:
#vi /etc/sysconfig/docker
进入Vi 编辑界面,在键盘上按i键进入编译模式,添加如下代码:
OPTIONS='-H 0.0.0.0:2375 -H unix:///var/run/docker.sock'
编辑结束后,按ESC键进入末行模式,输入:wq命令,然后按Enter键,保存代码并退出。
(4)修改完配置文件,重启smoker和joker两个节点的docker服务。在#后面输入systemctl daemon-reload命令,按Enter键,示例代码如下:
# systemctl daemon-reload
(5)两个节点下载swarm镜像。在#后面输入docker pull swarm命令,按Enter键,示例代码如下:
[root@smoker ~]# docker pull swarm
效果如图所示:
smoker节点下载swarm镜像
joker节点下载swarm镜像
到此,安装Docker Swarm结束。
(1)创建swarm(要保存初始化后token,因为在节点加入时要使用token作为通讯的密钥)。在smoker节点执行,示例代码如下(ip为本机ip):
[root@smoker ~]# docker swarm init --advertise-addr 10.24.2.32
执行结果,如图所示:
创建完成后,进行验证,在#后面输入docker node ls命令,然后按Enter键,查看集群的节点,示例代码如下:
[root@smoker ~]# docker node ls
执行结果,如图所示(ID旁边的*号代表已经连接到这个节点上):
(2)登录到joker节点,将该节点加入到swarm集群中,在#后面输入示例代码如下所示(token值在smoker节点初始化swarm的时候获得,IP 为smoker节点地址):
[root@joker ~]# docker swarm join --token SWMTKN-1-3e7cr4z7s49qnq45iysn44vqd4wi1zcntpf2ibhsssa44ayg7u-cdobfgbk0tphpmr6i22v82ucx 10.24.2.32:2377
执行结果,如图所示:
(3)回到smoker节点,在#后输入docker node ls命令,然后按Enter键,查看swarm集群节点信息。示例代码如下:
[root@smoker ~]# docker node ls
(4)在启动容器之前,先来创建一个覆盖网络,用来保证在不同主机上的容器网络能够互通。在#后输入 docker network create -d overlay ngx_net命令,然后按Enter键,创建网络,示例代码如下:
[root@smoker ~]# docker network create -d overlay ngx_net
(5)在smoker节点上使用上面这个覆盖网络创建nginx服务:其中,–replicas 参数指定服务由几个实例组成。注意:不需要提前在节点上下载nginx镜像,这个命令执行后会自动下载这个容器镜像(比如创建tomcat容器,就将下面命令中的镜像改为tomcat镜像)。在#后输入docker service create --replicas 1 --network ngx_net --name my-test -p 80:80 nginx命令,然后按Enter键,创建容器,示例代码如下:
[root@smoker ~]# docker service create --replicas 1 --network ngx_net --name my-test -p 80:80 nginx
执行结果,如图所示:
(6) 在#后输入 docker service ls命令,然后按Enter键,查看正在运行服务的列表,示例代码如下:
[root@smoker ~]# docker service ls
(7) 在#后输入docker service ps my-test命令,然后按Enter键,查询容器运行在哪个节点,示例代码如下:
[root@smoker ~]# docker service ps my-test
执行结果,如图所示:
(8) 可以通过 docker service scale 命令来设置服务中容器的副本数:比如将上面的my-test容器动态扩展到5个,在#后输入docker service scale my-test=5命令,然后按Enter键,动态扩容,示例代码如下:
[root@smoker ~]# docker service scale my-test=5
执行结果,如图所示:
(9) 在#后输入docker service ps my-test命令,然后按Enter键,查看容器在swarm节点中的启动情况,示例代码如下:
[root@smoker ~]# docker service ps my-test
执行结果,如图所示: