Docker swarm 筆記

防火牆開放端口:

  • TCP port 2377爲集羣管理通信
  • TCP and UDP port 7946 爲節點間通信
  • UDP port 4789 爲網絡間流量

在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 --replicas 1 --name gpsserver -p 10111:10111 -p 15678:15678 --update-delay 10s gpsserver:1.0

和運行容器一樣,可綁定多個端口

--name表明服務名字是gpsserver 

--replicas 表示期望1個服務實例

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 060zo3u0g3mj

060zo3u0g3mj是服務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服務

 

#docker pull hub.test.com:5000/almi/nginx:0.1 #下載私有倉庫鏡像
docker service create --name nginx  --replicas 2 --publish 80:80 hub.test.com:5000/almi/nginx:0.1
#--network=swarm_test
#replicas 2 創建2個容器,hub.test.com爲私有倉庫

 

#查看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 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.1
    ports:
     - "8081:80"
    deploy:
      replicas: 3

  busybox:
    image: hub.test.com:5000/busybox:latest
    volumes:
      - "/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 service ls
docker ps

 

#docker stack 常用命令

 

docker stack deploy   #部署新的堆棧或更新現有堆棧
docker stack ls   #列出現有堆棧
docker stack ps   #列出堆棧中的任務
docker stack rm   #刪除堆棧
docker stack services   #列出堆棧中的服務
docker stack down   #移除某個堆棧(不刪數據)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章