docker swarm 集群的简单实现

1、系统环境:三台CENTOS7的机器

192.168.156.75 管理节点

192.168.156.72 工作节点

192.168.156.77 工作节点

2、分别在三台机器安装docker

yum install docker-io -y

docker pull swarm

修改/lib/systemd/system/docker.service

在中间修改一行

[root@v72 tmp]# cat /lib/systemd/system/docker.service | grep ExecStart
ExecStart=/usr/bin/dockerd-current -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock \

修改/etc/sysconfig/docker-storage

[root@v72 tmp]# cat /etc/sysconfig/docker-storage | grep -v ^#


DOCKER_STORAGE_OPTIONS="--storage-driver overlay"

3、在管理节点上初始化集群

Status: Downloaded newer image for docker.io/swarm:latest
[root@v75 ~]# docker swarm init --advertise-addr 192.168.156.75
Swarm initialized: current node (842qfz9f65cue2cxavyj57p65) is now a manager.

To add a worker to this swarm, run the following command:

    docker swarm join \
    --token SWMTKN-1-212t8ykaqawrwjb6v4yk7xwas0tyuvuuitxza0r2z9klzcwx9z-7e36rbznzdraxo3n4vtz0hc88 \
    192.168.156.75:2377

#上面这一行用于节点加入群集,token是全球唯一的

To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

此时群集已经激活,并且只有自身一个节点

[root@v75 ~]# docker info|grep -i swarm
  WARNING: You're not using the default seccomp profile
Swarm: active
[root@v75 ~]#  netstat -tnlp|grep docker
tcp6       0      0 :::2377                 :::*                    LISTEN      8329/dockerd-curren 
tcp6       0      0 :::7946                 :::*                    LISTEN      8329/dockerd-curren 
[root@v75 ~]# docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
69f2aa51355f        bridge              bridge              local
96f7efaa2b9b        docker_gwbridge     bridge              local
1ec550fc11c2        host                host                local
p4wufy9vhwsm        ingress             overlay             swarm
212782e1b92b        none                null                local
[root@v75 ~]# docker node ls
ID                           HOSTNAME  STATUS  AVAILABILITY  MANAGER STATUS
842qfz9f65cue2cxavyj57p65 *  v75       Ready   Active        Leader
[root@v75 ~]# ls /var/lib/docker/swarm
certificates  docker-state.json  raft  state.json  worker

4、找到刚才群集初始化的输出,在两台节点机器上执行,加入群集

[root@v77 shell]# docker swarm join --token SWMTKN-1-212t8ykaqawrwjb6v4yk7xwas0tyuvuuitxza0r2z9klzcwx9z-7e36rbznzdraxo3n4vtz0hc88 192.168.156.75:2377
This node joined a swarm as a worker.

此时在群集上面能看到三个节点了

[root@v75 ~]# docker node ls
ID                           HOSTNAME  STATUS  AVAILABILITY  MANAGER STATUS
842qfz9f65cue2cxavyj57p65 *  v75       Ready   Active        Leader
ojdjeddpgcgfwvndwfwxh4amw    vm        Ready   Active        
vje0xnfw59zxb0qyjl37s1qcm    v72       Ready   Active        

5、创建服务

[root@v75 ~]# docker service create --name webs --mode global nginx        
xupykl4zucj1018cyazqgq7e3

服务名:webs  模式:global在三个节点上面跑  镜像:nginx

将会自动下载镜像启动容器

[root@v75 ~]# docker service ps webs
ID            NAME                                IMAGE         NODE  DESIRED STATE  CURRENT STATE            ERROR                             PORTS
sa3pt1g93y1x  webs.vje0xnfw59zxb0qyjl37s1qcm      nginx:latest  v72   Running        Running 25 minutes ago                                     
rsn23lc0rwwr  webs.842qfz9f65cue2cxavyj57p65      nginx:latest  v75   Running        Running 25 minutes ago                                     
8soldedzagn2  webs.ojdjeddpgcgfwvndwfwxh4amw      nginx:latest  vm    Running        Running 25 minutes ago        

6、添加到容器到主机的端口映射

[root@v75 ~]# docker service update --publish-add 8001:80 webs    
webs

此时通过节点所有主机的IP地址加映射的8001端口,都能访问到容器的80端口 ,只要容器有实例在任意一台机器上面跑即可

 

猜你喜欢

转载自blog.csdn.net/lsysafe/article/details/84886428