日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

从零开始学习docker(十七)Swarm mode ---service

發布時間:2024/9/16 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 从零开始学习docker(十七)Swarm mode ---service 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

擼了今年阿里、頭條和美團的面試,我有一個重要發現.......>>>

上一節中,我們學習了如何搭建一個swarm集群。本節中,我們介紹如何操作service。

service,大家應該不陌生,我們在之前講過。一個service就對應一個container容器。我們之前使用docker compose時,一個service時部署在一臺機器上面的。但是我們在swarm下面,我們創建一個service時,他可能會運行在我們cluster中的任何一個節點中去,下面詳細介紹。

docker service 命令

docker service create 有點像docker run

在swarm下面,我們不適用docker run命令來運行容器。docker run表示在本地創建一個container。而service不一定運行在本地。所以在swarm下,一般不用docker run。

?我們用創建一個service:

vincent@swarm-manager:~$ docker service create --name demo busybox sh -c "while true; do sleep 3600;done" lf0wx1k2xz3l88mandyifkdm7 overall progress: 1 out of 1 tasks 1/1: running verify: Service converged

查看service情況:

vincent@swarm-manager:~$ docker service ls ID NAME MODE REPLICAS IMAGE PORTS lf0wx1k2xz3l demo replicated 1/1 busybox:latest

那么這個service運行在哪個節點上呢?

vincent@swarm-manager:~$ docker service ps demo ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS hkgsjp3dswfh demo.1 busybox:latest swarm-worker-1 Ready Ready 3 seconds ago

說明運行在swarm-worker-1。

MODE replicated表示這個service是可以水平擴展的

如何擴展?

docker service scale demo=5

vincent@swarm-manager:~$ docker service scale demo=5 demo scaled to 5 overall progress: 5 out of 5 tasks 1/5: running 2/5: running 3/5: running 4/5: running 5/5: running verify: Service converged vincent@swarm-manager:~$ docker service ls ID NAME MODE REPLICAS IMAGE PORTS lf0wx1k2xz3l demo replicated 5/5 busybox:latest

可以看到成功擴展了5個service。5/5表示:分母表示這個service的scale是多少,分子表示有多少個已經正常啟動了。????

vincent@swarm-manager:~$ docker service ps demo ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS kvngsxo8q1jv demo.1 busybox:latest swarm-worker-2 Running Running 3 minutes ago w9uw1zoncfki demo.2 busybox:latest swarm-worker-1 Running Running 2 minutes ago sxsro5dzepjc demo.3 busybox:latest swarm-manager Running Running 2 minutes ago klxhs3ec1j6c demo.4 busybox:latest swarm-manager Running Running 2 minutes ago yxov6fzvwsyr demo.5 busybox:latest swarm-worker-2 Running Running 2 minutes ago

可以看到有兩個service在swarm-worker-2節點上,有兩個service在swarm-manager節點上,有一個在swarm-worker-1節點上。

我們去swarm-worker-1驗證一下:

vincent@swarm-worker-1:~$ docker container ls CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f1644c316b53 busybox:latest "sh -c 'while true; …" 3 minutes ago Up 3 minutes demo.2.w9uw1zoncfkikb1iayit9mdba

有一個container。再去swarm-work-2驗證一下:

vincent@swarm-worker-2:~$ docker container ls CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a0607b0aa4ad busybox:latest "sh -c 'while true; …" 4 minutes ago Up 4 minutes demo.5.yxov6fzvwsyrfue8q1redjyx9 9ccc6696214e busybox:latest "sh -c 'while true; …" 6 minutes ago Up 6 minutes demo.1.kvngsxo8q1jvd5mv6k9lcvxf1

有兩個container。再去swarm-manager驗證一下:

vincent@swarm-manager:~$ docker container ls CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 128053167c33 busybox:latest "sh -c 'while true; …" 5 minutes ago Up 5 minutes demo.4.klxhs3ec1j6cek8914lk5mhdt dd1dca1864dc busybox:latest "sh -c 'while true; …" 5 minutes ago Up 5 minutes demo.3.sxsro5dzepjc0mgs1phzz12ro

有兩個container。

將service橫向擴展5個以后,一切正常。

如果刪除容器,會怎么樣?

我們將swarm-worker-2中的一個容器刪掉:

vincent@swarm-worker-2:~$ docker rm -f 9ccc6696214e 9ccc6696214e

然后早swarm-maganger上查看:

vincent@swarm-manager:~$ docker service ls ID NAME MODE REPLICAS IMAGE PORTS lf0wx1k2xz3l demo replicated 5/5 busybox:latest

發現還是5個。但是這已經不是之前的5個容器了。

vincent@swarm-manager:~$ docker service ps demo ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS vq4lgu31i4bn demo.1 busybox:latest swarm-worker-1 Running Running 3 minutes ago kvngsxo8q1jv \_ demo.1 busybox:latest swarm-worker-2 Shutdown Failed 3 minutes ago "task: non-zero exit (137)" w9uw1zoncfki demo.2 busybox:latest swarm-worker-1 Running Running 10 minutes ago sxsro5dzepjc demo.3 busybox:latest swarm-manager Running Running 10 minutes ago klxhs3ec1j6c demo.4 busybox:latest swarm-manager Running Running 10 minutes ago yxov6fzvwsyr demo.5 busybox:latest swarm-worker-2 Running Running 10 minutes ago

可以看到,我們在swarm-worker-2上的一個容器已經shutdown了,但是在swarm-worker-1上重新啟動了一個。因此swarm-worker-1上有兩個container。

因此,swarm不僅保證可以橫向擴展,而且還保證一定數目的有效的。

當swarm發現scale中的部分節點上的service失效,那么他會通過cluster的任一節點上重啟一個,達到scale。可以確保系統是有效穩定的。

docker service rm demo

可以刪除demo.

vincent@swarm-manager:~$ docker service rm demo demo

?

總結

以上是生活随笔為你收集整理的从零开始学习docker(十七)Swarm mode ---service的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。