docker swarm 集群

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
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容