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

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

Docker Stack管理應(yīng)用

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

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

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

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

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

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

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

一起來回顧對(duì)Stack進(jìn)行兩個(gè)聲明式修改的過程。目標(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 命令來確認(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)過足夠的時(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)該通過 Stack 文件進(jìn)行聲明,然后通過 docker stack deploy 進(jìn)行部署。

正確的刪除某個(gè) Stack 方式是通過 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)刪除,但是密鑰并沒有。這是因?yàn)槊荑€是在 Stack 部署前就創(chuàng)建并存在了。在 Stack 最上層結(jié)構(gòu)中定義的卷同樣不會(huì)被 docker stack rm 命令刪除。這是因?yàn)榫淼脑O(shè)計(jì)初衷是保存持久化數(shù)據(jù),其生命周期獨(dú)立于容器、服務(wù)以及 Stack 之外。

全部教程
主站蜘蛛池模板: 欧美特黄a级高清免费看片 欧美特黄a级高清免费大片 | 一级黄网站 | 麻豆精品国产剧情在线观看 | 日韩中文字幕在线观看视频 | 2021日日摸夜夜添夜夜添影院 | 成人免费视频在线看 | 国产簧片 | 最近最新中文字幕免费大全3 | 天堂在线资源网 | 激情性爽三级成人 | 全部毛片免费看 | 国产a级特黄的片子视频 | 亚洲国产一区二区三区青草影视 | 欧美日韩一区二区亚洲 | free欧美性杂交hd | 精品欧美在线精品 | 九九国产精品视频 | 香蕉视频一级 | 欧美极度另类videos高清 | 国产91视频观看 | 男女涩涩网站 | 久久亚洲欧美综合激情一区 | 波多野结衣中文字幕在线播放 | 中文字幕一区二区三区在线观看 | 中文国产成人精品久久无广告 | 一级黄色录像免费看 | 色屁屁一区二区三区视频国产 | 国产欧美日韩亚洲 | 国产成人91精品 | 毛片高清| 激情综合久久 | 国产精品一区牛牛影视 | 青青草国产成人久久91网 | 男人av的天堂 | 99久久综合 | 免费一级毛片私人影院a行 免费一级毛片视频 | 久草免费色站 | 老湿影院福利 | 亚洲欧美一区二区三区在线观看 | 网站在线观看你懂的 | 亚洲图片欧美日韩 |