172.17.48.194(主)
172.17.48.195(從)
172.17.48.196(從)
172.17.48.197(從)
1.初始化一個集群的master服務器
docker swarm init --advertise-addr 172.17.48.194
[root@localhost ~]# docker swarm init --advertise-addr 172.17.48.194 Swarm initialized: current node (j20c5mjl4iwa32rosb9ny43fm) is now a manager. To add a worker to this swarm, run the following command: docker swarm join --token SWMTKN-1-667gxbotuejy9vblhk29qogybx4i460f8pc0pui4q0igmmkr57-aj69k8srd3kp8t4740aktc9tx 172.17.48.194:2377 To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

2.從服務器加入,執行下面的命令,注意需要將主服務器的2377端口打開
docker swarm join --token SWMTKN-1-667gxbotuejy9vblhk29qogybx4i460f8pc0pui4q0igmmkr57-aj69k8srd3kp8t4740aktc9tx 172.17.48.194:2377
加入成功后,docker node ls 查看集群的信息
docker swarm常用命令
Docker swarm init:初始化一個集群
Docker swarm join:加入一個集群
Docker node ls:查看集群的信息
Docker service create:創建一個集群服務
Docker service ls:查看集群的服務
Docker service rm:刪除一個集群服務
3.搭建docker私服庫
拉取registry鏡像
docker pull registry
創建容器
docker run -p 5000:5000 -v /opt/data/registry:/var/lib/registry --restart=always --name my_registry -d registry:latest
這樣一個docker私服庫就已經搭建好了

容器啟動后,打開瀏覽器訪問:
http://172.17.48.194:5000/v2/ 出現下面這種情況說明運行正常

上傳自己代碼,生成鏡像
docker build -t aliyunhelper:1.0 . --network=host

推送自己的鏡像到私有庫
先要打標簽,否則可能出現以下錯誤

解決辦法:
docker tag aliyunhelper:1.0 172.17.48.194:5000/aliyunhelper:1.0
如果遇到這個問題

解決辦法如下:
vi /etc/docker/daemon.json
添加 {"insecure-registries": ["http://172.17.48.194:5000"]}

保存
systemctl daemon-reload
systemctl restart docker
再次嘗試push
docker push 172.17.48.194:5000/aliyunhelper:1.0
成功如下

上傳成功后,curl
http://172.17.48.194:5000/v2/_catalog 可以查詢私服庫信息,如下圖所示


4.創建一個集群服務
用之前從docker私服庫中拉取的鏡像,在主機上輸入:
docker service create --replicas 4 -p 8000:80 --name mySwarm1 172.17.48.194:5000/aliyunhelper:1.0
這樣就創建了一個docker swarm集群服務,這里的replicas是部署幾台服務器,swarm集群會先從本地找有沒有對應的鏡像,如果有則直接run該鏡像,如果沒有則從docker私服庫上拉取,然后一個服務器一個服務器run鏡像生成容器



打開瀏覽器訪問:
172.17.48.194:8000
172.17.48.195:8000
172.17.48.196:8000
172.17.48.197:8000