Docker入門核心概念3-Services

在實際應用中,我們需要水平擴展我們的應用使之能夠達到負載均衡的目的。docker可以使用service(服務)輕易地水平擴展一個分布式應用.

在一個分布式應用當中,不同的app被稱為是services。

服務就是產(chǎn)品容器。一個服務運行著一個鏡像,但是它將鏡像的運行編輯成一個字典,eg:使用什么端口號,多少副本等等。通過伸縮一個服務來改變?nèi)萜鲗嵗臄?shù)量,指定更多的計算資源用于這項服務上。

通過docker-compose.yml來定義、運行和伸縮服務

eg:

version: "3"

services:

? web:

? ? # 替換成你自己的倉庫鏡像鏈接 replace username/repo:tag with your name and image details

? ? image: username/repo:tag

? ? deploy:

? ? ? replicas: 5

? ? ? resources:

? ? ? ? limits:

? ? ? ? ? cpus: "0.1"

? ? ? ? ? memory: 50M

? ? ? restart_policy:

? ? ? ? condition: on-failure

? ? ports:

? ? ? - "80:80"

? ? networks:

? ? ? - webnet

networks:

? webnet:

作用:

? ? 1. 從注冊域名下拉去上傳的鏡像

? ? 2. 運行鏡像五個實例來作為一個服務(被稱為web),限制每一個cpu使用率為最多10%,50MB內(nèi)存

? ? 3. 當一個容器出錯時立即重啟

? ? 4. 映射端口4000到主機的80

? ? 5. 指示web的容器通過 網(wǎng)絡負載均衡來共同分享一個80端口(稱為webnet),

? ? 6.?Define the?webnet?network with the default settings (which is a load-balanced overlay network).

運行負載均衡APP

首先執(zhí)行下條命令(下一節(jié)深入解釋)

docker swarm init

如果不執(zhí)行上面這句,可能會出現(xiàn)如下情況:

?If you don’t run?docker swarm init?you get an error that “this node is not a swarm manager.”

運行

docker stack deploy-cdocker-compose.yml getstartedlab


查看服務id

docker service ls

一個容器運行一個著一個服務,叫做任務。任務有獨一無二的 id。

docker service ps?getstartedlab_web

顯示id僅數(shù)字增長的容器

docker containerls -q

伸縮應用

可以通過更改配置 replicas 的值對應用進行伸縮。保存更改后,重新運行

docker stack deploy -c docker-compose.yml getstartedlab

更新時,docker 不需要關閉任何一個容器。

關閉app

docker stack rm getstartedlab

關閉群(swarm)

docker swarm leave --force

總結(jié)一下:

docker run 足夠簡單,但是產(chǎn)品容器是作為服務來實現(xiàn)的。在compose file文件中,服務編碼成一個行為。這個文件可以用來伸縮、限制和重新部署你的應用。服務改變時,使用相同的命令 dockerc stack deploy .

掌握下列命令:

docker stack ls # List stacks or apps

docker stack deploy -c <composefile> <appname>? # Run the specified Compose file

docker service ls? ? ? ? ? ? ? ? # List running services associated with an app

docker service ps <service>? ? ? ? ? ? ? ? ? # List tasks associated with an app

docker inspect <task or container>? ? ? ? ? ? ? ? ? # Inspect task or container

docker container ls -q? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? # List container IDs

docker stack rm <appname>? ? ? ? ? ? ? ? ? ? ? ? ? ? # Tear down an application

docker swarm leave --force? ? ? # Take down a single node swarm from the manager

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容