黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

Docker教程
Docker安裝
Docker使用
Docker實(shí)例

Docker Stack管理應(yīng)用

Stack 是一組相關(guān)聯(lián)的服務(wù)和基礎(chǔ)設(shè)施,需要進(jìn)行統(tǒng)一的部署和管理。雖然這句話里充斥著術(shù)語(yǔ),但仍提醒我們 Stack 是由普通的 Docker 資源構(gòu)建而來(lái):網(wǎng)絡(luò)、卷、密鑰、服務(wù)等。

這意味著可以通過(guò)普通的 Docker 命令對(duì)其進(jìn)行查看和重新配置,例如 docker network、docker volume、docker secret、docker service 等。

在此前提之下,通過(guò) docker service 命令來(lái)管理 Stack 中某個(gè)服務(wù)是可行的。一個(gè)簡(jiǎn)單的例子是通過(guò) docker service scale 命令來(lái)擴(kuò)充 appserver 服務(wù)的副本數(shù)。但是,這并不是推薦的方式!

推薦方式是通過(guò)聲明式方式修改,即將 Stack 文件作為配置的唯一聲明。這樣,所有 Stack 相關(guān)的改動(dòng)都需要體現(xiàn)在 Stack 文件中,然后更新重新部署應(yīng)用所需的 Stack 文件。

下面是一個(gè)簡(jiǎn)單例子,闡述了為什么通過(guò)命令修改的方式不好(通過(guò) CLI 進(jìn)行變更)。

假設(shè)讀者已經(jīng)部署了一個(gè) Stack,采用的 Stack 文件是《Docker Stack》一 節(jié)中從 GitHub 復(fù)制的倉(cāng)庫(kù)中的 docker-stack.yml。這意味著目前 appserver 服務(wù)有兩個(gè)副本。如果通過(guò) docker service scale 命令將副本修改為 4 個(gè),當(dāng)前運(yùn)行的集群會(huì)有 4 個(gè)副本,但是 Stack 文件中仍然是兩個(gè)。

但是,假設(shè)通過(guò)修改 Stack 文件對(duì) Stack 做了某些改動(dòng),然后通過(guò) docker stack deploy 命令進(jìn)行滾動(dòng)部署。這會(huì)導(dǎo)致 appserver 服務(wù)副本數(shù)被回滾到兩個(gè),因?yàn)?Stack 文件就是這么定義的。因此,推薦對(duì) Stack 所有的變更都通過(guò)修改 Stack 文件來(lái)進(jìn)行,并且將該文件放到一個(gè)合適的版本控制系統(tǒng)當(dāng)中。

一起來(lái)回顧對(duì)Stack進(jìn)行兩個(gè)聲明式修改的過(guò)程。目標(biāo)是進(jìn)行如下改動(dòng)。

增加 appserver 副本數(shù),數(shù)量為 2~10。將 visualizer 服務(wù)的優(yōu)雅停止時(shí)間增加到 2min。修改 docker-stack.yml 文件,更新兩個(gè)值:

services.appserver.deploy.replicas=10services.visualizer.stop_grace_period=2m

目前,Stack 文件中的內(nèi)容如下。

<Snip>
appserver:
image: dockersamples/atsea_app
networks:
- front-tier
- back-tier
- payment
deploy:
replicas: 10 <<Updated value
<Snip>
visualizer:
image: dockersamples/visualizer:stable
ports:
- "8001:8080"
stop_grace_period: 2m <<Updated value
<Snip

保存文件并重新部署應(yīng)用。

$ docker stack deploy -c docker-stack.yml seastack
Updating service seastack_reverse_proxy (id: z4crmmrz7zi83o0721heohsku)
Updating service seastack_database (id: 3vvpkgunetxaatbvyqxfic115)
Updating service seastack_appserver (id: ljht639w33dhv0dmht1q6mueh)
Updating service seastack_visualizer (id: rbwoyuciglre01hsm5fviabjf)
Updating service seastack_payment_gateway (id: w4gsdxfnb5gofwtvmdiooqvxs)

以上重新部署應(yīng)用的方式,只會(huì)更新存在變更的部分。

運(yùn)行 docker stack ps 命令來(lái)確認(rèn) appserver 副本數(shù)量確實(shí)增加。

$ docker stack ps seastack
NAME NODE DESIRED STATE CURRENT STATE
seastack_visualizer.1 mgr-1 Running Running 1 second ago
seastack_visualizer.1 mgr-1 Shutdown Shutdown 3 seconds ago
seastack_appserver.1 wrk-2 Running Running 24 minutes ago
seastack_appserver.2 wrk-1 Running Running 24 minutes ago
seastack_appserver.3 wrk-2 Running Running 1 second ago
seastack_appserver.4 wrk-1 Running Running 1 second ago
seastack_appserver.5 wrk-2 Running Running 1 second ago
seastack_appserver.6 wrk-1 Running Starting 7 seconds ago
seastack_appserver.7 wrk-2 Running Running 1 second ago
seastack_appserver.8 wrk-1 Running Starting 7 seconds ago
seastack_appserver.9 wrk-2 Running Running 1 second ago
seastack_appserver.10 wrk-1 Running Starting 7 seconds ago

輸出內(nèi)容有所裁剪,只展示了受變更影響的服務(wù)。

注意關(guān)于 visualizer 服務(wù)有兩行內(nèi)容。其中一行表示某個(gè)副本在 3s 前停止,另一行表示新副本已經(jīng)運(yùn)行了 1s。這是因?yàn)閯偛艑?duì) visualizer 服務(wù)作了修改,所以 Swarm 集群終止了正在運(yùn)行的副本,并且啟動(dòng)了新的副本,新副本中更新了 stop_grace_period 的值。

還需要注意的是,appserver 服務(wù)目前擁有 10 個(gè)副本,但不同副本的“CURRENT STATE”一列狀態(tài)并不相同:有些處于 running 狀態(tài),而有些仍在 starting 狀態(tài)。

經(jīng)過(guò)足夠的時(shí)間,集群的狀態(tài)會(huì)完成收斂,期望狀態(tài)和當(dāng)前狀態(tài)就會(huì)保持一致。在那時(shí),集群中實(shí)際部署和觀察到的狀態(tài),就會(huì)跟 Stack 文件中定義的內(nèi)容完全一致。

所有應(yīng)用 /Stack 都應(yīng)采用該方式進(jìn)行更新。所有的變更都應(yīng)該通過(guò) Stack 文件進(jìn)行聲明,然后通過(guò) docker stack deploy 進(jìn)行部署。

正確的刪除某個(gè) Stack 方式是通過(guò) docker stack rm 命令。一定要謹(jǐn)慎!刪除 Stack 不會(huì)進(jìn)行二次確認(rèn)。

$ docker stack rm seastack
Removing service seastack_appserver
Removing service seastack_database
Removing service seastack_payment_gateway
Removing service seastack_reverse_proxy
Removing service seastack_visualizer
Removing network seastack_front-tier
Removing network seastack_payment
Removing network seastack_default
Removing network seastack_back-tier

注意:網(wǎng)絡(luò)和服務(wù)已經(jīng)刪除,但是密鑰并沒(méi)有。這是因?yàn)槊荑€是在 Stack 部署前就創(chuàng)建并存在了。在 Stack 最上層結(jié)構(gòu)中定義的卷同樣不會(huì)被 docker stack rm 命令刪除。這是因?yàn)榫淼脑O(shè)計(jì)初衷是保存持久化數(shù)據(jù),其生命周期獨(dú)立于容器、服務(wù)以及 Stack 之外。

全部教程
主站蜘蛛池模板: 狠狠色狠狠色综合日日小蛇 | 成年男女免费视频网站 | 韩国成人影院 | 国产毛片毛片精品天天看 | 美女的激情影院 | 欧美亚洲综合另类 | 草草草在线 | 1024国产精品视频观看 | 久久久青草青青亚洲国产免观 | 人与鲁牲交持级毛片 | 狠狠色丁香婷婷综合小时婷婷 | 天天搞夜夜 | 欧美成人另类人妖 | 窝窝午夜一级看片爽 | 男人和女人日皮的视频 | 一级做a爰片鸭王 | 99久在线观看 | 99v视频国产在线观看免费 | 亚洲日韩中文字幕天堂不卡 | 日批免费在线观看 | 国产精品免费aⅴ片在线观看 | 国产一区二区三区四 | 91视频青青草 | 日韩美女视频在线 | 亚洲欧美日韩国产综合专区 | 日韩一区二区三区视频在线观看 | 九九九精品视频 | 久久久青草青青国产亚洲免观 | 国产成人影院在线观看 | 亚洲欧美日韩高清一区二区一 | 午夜在线| 色爱区综合五月激情 | 日韩第一视频 | 欧美在线视频网 | 免费在线观看日本 | 欧美精品亚洲精品日韩专 | 欧美日韩国产欧美 | 日韩伦理网 | 在线一本 | 一级毛片免费在线播放 | 日本一本在线 |