Docker swarm 笔记
防火墻開放端口:
- TCP port 2377為集群管理通信
- TCP and UDP port 7946 為節點間通信
- UDP port 4789 為網絡間流量
創建attachable network
docker network create --driver=overlay --attachable mynet-core查看網絡
docker network ls
在manager1上創建swarm集群:
$ docker swarm init --advertise-addr 192.168.0.251--advertise-addr選項表示管理節點公布它的IP是多少。其它節點必須能通過這個IP找到管理節點。
運行docker info來查看當前swarm集群的狀態:
$ docker info查看節點信息
$ docker node ls查看加入節點指令
$ docker swarm join-token worker To add a worker to this swarm, run the following command: docker swarm join --token SWMTKN-1-3bxotwbwtvhtzawo548h738h2rjs4s8hgj8ah6cxfydb775grz-cjzodty09sti7eb5inmdg4err 192.168.0.251:2377加入節點
ssh到worker2 ,使主機2?加信集群
$ docker swarm join --token SWMTKN-1-3bxotwbwtvhtzawo548h738h2rjs4s8hgj8ah6cxfydb775grz-cjzodty09sti7eb5inmdg4err 192.168.0.251:2377在swarm集群上部署一個服務
$ docker service create --network mynet-core --replicas 1 --name gpsserver -p 10111:10111 -p 15678:15678 ?--mode global --update-delay 10s gpsserver:1.0和運行容器一樣,可綁定多個端口
--name表明服務名字是gpsserver?
--replicas 表示期望1個服務實例
--mode?模式?replicated or global(默認replicated,如果設置為global,無需設置 --replicas ,每個節點下,都會運行一個task)
--publish published=53,target=53,protocol=udp,mode=host (綁定端口不使用簡寫,使用host模式,端口不轉發,不使用swarm的負載均衡功能,配合nginx等第三方工具)
--network mynet-core?attachable network是一個非常重要的特性。你最好使用它,否則docker run創建的容器將無法接入Swarm集群的網絡。
gpsserver:1.0?鏡像與標簽
?
在服務部署階段就指定滾動升級策略
- --update-delay配置了更新服務的時間間隔,你可以指定時間T為秒是Ts,分是Tm,或時是Th,所以10m30s就是10分30秒的延遲
- 默認的調度器scheduler一次更新一個任務.你可以傳入參數--update-parallelism來配置調度器同時更新的最大任務數量
- 默認的當一個更新任務返回RUNNING狀態后,調度器才調度另一個更新任務,直到所有任務都更新了。如果更新過程中任何任務返回了FAILED,調度器就會停止更新。你可以給命令docker service create or docker service update配置配置--update-failure-action,來配置這個行為。
?
至此所有節點都可訪問服務了
查看運行的服務
$ docker service ls
查看優化顯示的服務詳情
$ docker service inspect --pretty 060zo3u0g3mj060zo3u0g3mj是服務id
查看到哪些節點在運行該服務實例
$ docker service ps 060zo3u0g3mj縮放一個或多個復制服務
$ docker service scale 060zo3u0g3mj=2刪除服務
$ docker service rm 060zo3u0g3mj動態更新服務
$ docker service update --image gpsserver:2.0 gpsserver(或服務id)使用--mount-add或--mount-rm選項可以添加或刪除服務的bind-mount或卷
回滾上個一個配置或版本
$ docker service update --rollback gpsserver
#創建nginx服務
#查看swarm集群中的服務
?
docker service ls docker service ps nginx#kill其中一個容器
docker kill 96e6bccc2209 #等會自動啟動一個新的容器#修改服務實例數量為3
docker service scale nginx=3#刪除nginx服務
docker service rm nginx#刪除swarm節點
docker swarm leave --force #node docker node rm -f <node> #manager#docker swarm 常用命令
docker swarm init #初始化集群 docker swarm join-token worker #查看工作節點的 token docker swarm join-token manager #查看管理節點的 token docker swarm join #加入集群中? ? docker swarm update --task-history-limit 2? #?更改任務歷史記錄保留限制
#docker node 常用命令
docker node ls #查看所有集群節點 docker node rm #刪除某個節點(-f強制刪除) docker node inspect ##查看節點詳情 docker node demote #節點降級,由管理節點降級為工作節點 docker node promote #節點升級,由工作節點升級為管理節點 docker node update #更新節點 docker node ps #查看節點中的 Task 任務
#docker service 常用命令
docker service create #部署服務 docker service inspect #查看服務詳情 docker service logs #產看某個服務日志 docker service ls #查看所有服務詳情 docker service rm #刪除某個服務(-f強制刪除) docker service scale #設置某個服務個數 docker service update #更新某個服務
#++++++++++++++++++++++++++++++
#Docker Stack 部署多個集群服務
#docker stack使用編排文件docker-compose.yml批量部署服務
#創建編排文件docker-compose.yml
mkdir mydocker ; cd mydocker echo "# docker stack version: '3' services:mynginx:image: hub.test.com:5000/almi/nginx:0.1ports:- "8081:80"deploy:replicas: 3busybox:image: hub.test.com:5000/busybox:latestvolumes:- "/var/run/docker.sock:/var/run/docker.sock"deploy:replicas: 2 #">docker-compose.yml#使用docker-compose.yml批量創建服務
docker stack deploy -c docker-compose.yml deploy-test docker stack ps deploy-test #容器名稱 deploy-test_<service名稱>.隨機后綴#docker stack 常用命令
docker stack deploy #部署新的堆棧或更新現有堆棧 docker stack ls #列出現有堆棧 docker stack ps #列出堆棧中的任務 docker stack rm #刪除堆棧 docker stack services #列出堆棧中的服務 docker stack down #移除某個堆棧(不刪數據) 掛載目錄, mount?docker service create --mount type=bind,target=/container_data/,source=/host_data/
例 - 本地目錄: target = 容器里面的路徑, source = 本地硬盤路徑
# docker service create --name nginx --mount type=bind,target=/usr/share/nginx/html/,source=/opt/web/ --replicas 2 --publish 80:80/tcp nginxdocker service create --mount type=volume,source=<VOLUME-NAME>,target=<CONTAINER-PATH>,volume-driver=<DRIVER>,
例 - 掛載volume卷: source = volume 名稱 , traget = 容器里面的路徑
# docker service create --name nginx --mount type=volume,source=myvolume,target=/usr/share/nginx/html,volume-driver=local --replicas 2 --publish 80:80/tcp nginx
轉載于:https://www.cnblogs.com/lucoo/p/10147946.html
總結
以上是生活随笔為你收集整理的Docker swarm 笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 马达是什么意思
- 下一篇: CodeForces - 500A-Ne