通過上一節已經創建了1個manager和2個worker,現在看看如何使用。源碼地址:github.com/limingios/do中的No.5;

service的操作

之前說docker-compose的時候提過service,一個service就是一個container一個容器,而在swarm中的service,是一個container,可能運行在我們的clus裡面的任何一個節點上邊。

  • docker-swarm 有個專門的命令 docker service

docker service create 和 docker run 的命令基本是一致的。在swarm下就不在使用docker run了,docker run 是在本地創建一個容器。我們在clus下創建的docker 容器不一定是運行在那個機器下。所以docker run 基本不用了。

docker service --help
docker servcie create
docker run

  • 創建一個swarm的演示容器

docker service create --name demo busybox sh -c "while true;do sleep 3600;done"
docker service ls
#目前這個容器是運行在swarm-worker1上,這都是隨機的。
docker service ps demo

docker service ls

  • 橫向水平的擴展

#橫向水平擴展至5個容器
docker service scale demo=5
docker service ls
docker service ps demo

  • 自動恢復功能

我們先去worker2中強制刪除,然後查看manager的情況,在過一會通過命令查看docker service ls的情況

# 在docker-work2 中刪除 容器
docker rm -f 容器2中的容器ID
# 在docker-manager中查看,正常運行的只有4個
docker service ls
# 查看詳細的情況,docker-work2中的容器已經shutdown了
docker service ps demo

過幾十秒 在查看容器運行情況,自動回復之前要求的5個。

# 在docker-manager中查看,正常運行的只有5個
docker service ls
# 查看詳細的情況,docker-work2中的容器已經shutdown了,又起來了一個
docker service ps demo

  • 刪除service的效果

docker service rm demo

PS:docker service 內部有很多複雜的操作,雖然各位老鐵用了簡單的 一個創建一個刪除,但是底層裡面會知道有多個容器,在那個機器上邊,這些機器裡面的容器應用運行那些命令,這就起到了集羣管理。

推薦閱讀:

相關文章