1.Swarm鏡像下載
分別在不同的節點上執行如下命令
docker pull swarm
2.初始化Swarm
docker swarm init --advertise-addr 192.168.62.15
# --advertise-addr 選項表示管理節點公布它的IP是多少,多網卡時需要指定。其它節點必須能通過這個IP找到管理節點。
問題:
如果你的swarm運行在默認端口,那么你就可能會遇到VXLAN默認端口4789/udp被云服務廠商阻斷的問題。因為有些云服務器比如阿里云服務器UDP監聽的250、4789和4790三個端口為系統保留端口,暫時不對外開放,所以必須由我們自己手動操作更改端口號。
解決方法:
這個問題在docker:v19.03之前無法直接解決。19.03版本,docker在swarm init之上增加了--data-path-port uint32 的配置項用于更改docker swarm的VXLAN端口。
# 以指定端口5789/udp為例:
docker swarm init --data-path-port 5789
3.添加集群節點
執行 第二步 初始化 會返回一條添加工作節點的命令,直接拷貝在其他節點上執行即可,如下指令:
docker swarm join --token SWMTKN-1-5vqq9j2bwq5rllsubg49cs16440v2ixkngvf25e5688i86c8qf-eawa9w8wf2m5mu9e6ovmhjuyy 192.168.62.15:2377
如果你找不到加入命令了,可以在管理節點運行下列命令找回加入命令:
#生成工作節點 添加命令
docker swarm join-token worker
#生成管理節點 添加命令
docker swarm join-token manager
4.查看集群節點
docker node ls
5.Node Label 管理
可以根據節點類型,添加不同類型的標簽,在使用stack部署server時,在指定的標簽中部署
# 添加標簽:
docker node update --label-add role=web node1 (hostname)
# 查看標簽:
docker node inspect node1
# 刪除標簽:
docker node update --label-rm role node1
6.退出集群
#管理器節點離開Docker Swarm模式
docker swarm leave --force
#普通節點離開Docker Swarm模式
docker swarm leave
7.開放外部管理端口
# 編輯docker 文件
vi /usr/lib/systemd/system/docker.service
#查找ExecStart位置,然后注釋
#ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
#修改為如下:
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
#然后重啟docker
附1 docker 常用指令:
=============================================================
命令 說明
-------------------------------------------------------------
docker container ls 列出正在運行的容器
docker ps 列出正在運行的容器
docker container ls -a 列出所有的容器
docker ps -a 列出所有的容器
docker container start 啟動容器
docker start 啟動容器
docker container stop 停止容器
docker stop 停止容器
docker container restart 重啟容器
docker restart 重啟容器
docker container rm 刪除容器
docker rm 刪除容器
docker container logs 打印容器的標準輸出
docker logs 打印容器的標準輸出
docker exec -it ea0cda7fe8d7 進入容器
docker export ea0cda7fe8d7 > test.tar 導出容器
cat test.tar | docker import - test/ubuntu:v1.0 導入容器
docker import http://example.com/exampleimage.tgz example/imagerepo 導入容器網絡
附2 Centos7.7 Docker如何非root用戶操作
1、創建docker組
命令:groupadd docker
2、將當前用戶加入docker組
命令:gpasswd -a ${USER} docker (${USER} 為需要操作docker的用戶名)
3、重新啟動docker服務
sudo systemctl restart docker
4、當前用戶退出系統重新登陸
# 運行docker命令 docker ps 查看已運行的容器
docker ps
# 運行docker命令 docker images 查看已下載的鏡像
docker images
附3 docker-compose安裝
#安裝方式,官網
https://docs.docker.com/compose/install/
#安裝命令:
curl -L "https://github.com/docker/compose/releases/download/1.25.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose