Docker(六):Docker 三剑客之 Docker Swarm
實(shí)踐中會(huì)發(fā)現(xiàn),生產(chǎn)環(huán)境中使用單個(gè) Docker 節(jié)點(diǎn)是遠(yuǎn)遠(yuǎn)不夠的,搭建 Docker 集群勢(shì)在必行。然而,面對(duì) Kubernetes, Mesos 以及 Swarm 等眾多容器集群系統(tǒng),我們?cè)撊绾芜x擇呢?它們之中,Swarm 是 Docker 原生的,同時(shí)也是最簡(jiǎn)單,最易學(xué),最節(jié)省資源的,比較適合中小型公司使用。
Docker Swarm 介紹
Swarm 在 Docker 1.12 版本之前屬于一個(gè)獨(dú)立的項(xiàng)目,在 Docker 1.12 版本發(fā)布之后,該項(xiàng)目合并到了 Docker 中,成為 Docker 的一個(gè)子命令。目前,Swarm 是 Docker 社區(qū)提供的唯一一個(gè)原生支持 Docker 集群管理的工具。它可以把多個(gè) Docker 主機(jī)組成的系統(tǒng)轉(zhuǎn)換為單一的虛擬 Docker 主機(jī),使得容器可以組成跨主機(jī)的子網(wǎng)網(wǎng)絡(luò)。
Docker Swarm 是一個(gè)為 IT 運(yùn)維團(tuán)隊(duì)提供集群和調(diào)度能力的編排工具。用戶可以把集群中所有 Docker Engine 整合進(jìn)一個(gè)「虛擬 Engine」的資源池,通過(guò)執(zhí)行命令與單一的主 Swarm 進(jìn)行溝通,而不必分別和每個(gè) Docker Engine 溝通。在靈活的調(diào)度策略下,IT 團(tuán)隊(duì)可以更好地管理可用的主機(jī)資源,保證應(yīng)用容器的高效運(yùn)行。
Docker Swarm 優(yōu)點(diǎn)
任何規(guī)模都有高性能表現(xiàn)
對(duì)于企業(yè)級(jí)的 Docker Engine 集群和容器調(diào)度而言,可拓展性是關(guān)鍵。任何規(guī)模的公司——不論是擁有五個(gè)還是上千個(gè)服務(wù)器——都能在其環(huán)境下有效使用 Swarm。?
經(jīng)過(guò)測(cè)試,Swarm 可拓展性的極限是在 1000 個(gè)節(jié)點(diǎn)上運(yùn)行 50000 個(gè)部署容器,每個(gè)容器的啟動(dòng)時(shí)間為亞秒級(jí),同時(shí)性能無(wú)減損。
靈活的容器調(diào)度
Swarm 幫助 IT 運(yùn)維團(tuán)隊(duì)在有限條件下將性能表現(xiàn)和資源利用最優(yōu)化。Swarm 的內(nèi)置調(diào)度器(scheduler)支持多種過(guò)濾器,包括:節(jié)點(diǎn)標(biāo)簽,親和性和多種容器部策略如 binpack、spread、random 等等。
服務(wù)的持續(xù)可用性
Docker Swarm 由 Swarm Manager 提供高可用性,通過(guò)創(chuàng)建多個(gè) Swarm master 節(jié)點(diǎn)和制定主 master 節(jié)點(diǎn)宕機(jī)時(shí)的備選策略。如果一個(gè) master 節(jié)點(diǎn)宕機(jī),那么一個(gè) slave 節(jié)點(diǎn)就會(huì)被升格為 master 節(jié)點(diǎn),直到原來(lái)的 master 節(jié)點(diǎn)恢復(fù)正常。?
此外,如果某個(gè)節(jié)點(diǎn)無(wú)法加入集群,Swarm 會(huì)繼續(xù)嘗試加入,并提供錯(cuò)誤警報(bào)和日志。在節(jié)點(diǎn)出錯(cuò)時(shí),Swarm 現(xiàn)在可以嘗試把容器重新調(diào)度到正常的節(jié)點(diǎn)上去。
和 Docker API 及整合支持的兼容性?
Swarm 對(duì) Docker API 完全支持,這意味著它能為使用不同 Docker 工具(如 Docker CLI,Compose,Trusted Registry,Hub 和 UCP)的用戶提供無(wú)縫銜接的使用體驗(yàn)。
Docker Swarm 為 Docker 化應(yīng)用的核心功能(諸如多主機(jī)網(wǎng)絡(luò)和存儲(chǔ)卷管理)提供原生支持。開(kāi)發(fā)的 Compose 文件能(通過(guò) docker-compose up )輕易地部署到測(cè)試服務(wù)器或 Swarm 集群上。Docker Swarm 還可以從 Docker Trusted Registry 或 Hub 里 pull 并 run 鏡像。
綜上所述,Docker Swarm 提供了一套高可用 Docker 集群管理的解決方案,完全支持標(biāo)準(zhǔn)的 Docker API,方便管理調(diào)度集群 Docker 容器,合理充分利用集群主機(jī)資源。
* 并非所有服務(wù)都應(yīng)該部署在Swarm集群內(nèi)。數(shù)據(jù)庫(kù)以及其它有狀態(tài)服務(wù)就不適合部署在Swarm集群內(nèi)。*
相關(guān)概念
節(jié)點(diǎn)
運(yùn)行 Docker 的主機(jī)可以主動(dòng)初始化一個(gè) Swarm 集群或者加入一個(gè)已存在的 Swarm 集群,這樣這個(gè)運(yùn)行 Docker 的主機(jī)就成為一個(gè) Swarm 集群的節(jié)點(diǎn) (node) 。節(jié)點(diǎn)分為管理 (manager) 節(jié)點(diǎn)和工作 (worker) 節(jié)點(diǎn)。
管理節(jié)點(diǎn)用于 Swarm 集群的管理,docker swarm 命令基本只能在管理節(jié)點(diǎn)執(zhí)行(節(jié)點(diǎn)退出集群命令 docker swarm leave 可以在工作節(jié)點(diǎn)執(zhí)行)。一個(gè) Swarm 集群可以有多個(gè)管理節(jié)點(diǎn),但只有一個(gè)管理節(jié)點(diǎn)可以成為 leader,leader 通過(guò) raft 協(xié)議實(shí)現(xiàn)。
工作節(jié)點(diǎn)是任務(wù)執(zhí)行節(jié)點(diǎn),管理節(jié)點(diǎn)將服務(wù) (service) 下發(fā)至工作節(jié)點(diǎn)執(zhí)行。管理節(jié)點(diǎn)默認(rèn)也作為工作節(jié)點(diǎn)。你也可以通過(guò)配置讓服務(wù)只運(yùn)行在管理節(jié)點(diǎn)。下圖展示了集群中管理節(jié)點(diǎn)與工作節(jié)點(diǎn)的關(guān)系。
服務(wù)和任務(wù)
任務(wù) (Task)是 Swarm 中的最小的調(diào)度單位,目前來(lái)說(shuō)就是一個(gè)單一的容器。?
服務(wù) (Services) 是指一組任務(wù)的集合,服務(wù)定義了任務(wù)的屬性。服務(wù)有兩種模式:
- replicated services 按照一定規(guī)則在各個(gè)工作節(jié)點(diǎn)上運(yùn)行指定個(gè)數(shù)的任務(wù)。
- global services 每個(gè)工作節(jié)點(diǎn)上運(yùn)行一個(gè)任務(wù)
兩種模式通過(guò) docker service create 的 –mode 參數(shù)指定。下圖展示了容器、任務(wù)、服務(wù)的關(guān)系。
創(chuàng)建 Swarm 集群
我們知道 Swarm 集群由管理節(jié)點(diǎn)和工作節(jié)點(diǎn)組成。我們來(lái)創(chuàng)建一個(gè)包含一個(gè)管理節(jié)點(diǎn)和兩個(gè)工作節(jié)點(diǎn)的最小 Swarm 集群。
初始化集群
查看虛擬主機(jī),現(xiàn)在沒(méi)有
docker-machine ls NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS- 1
- 2
使用 virtualbox 創(chuàng)建管理節(jié)點(diǎn)
docker-machine create --driver virtualbox manager1 #進(jìn)入管理節(jié)點(diǎn) docker-machine ssh manager1- 1
- 2
- 3
執(zhí)行 sudo -i 可以進(jìn)入Root 權(quán)限
我們使用 docker swarm init 在 manager1 初始化一個(gè) Swarm 集群。
docker@manager1:~$ docker swarm init --advertise-addr 192.168.99.100 Swarm initialized: current node (j0o7sykkvi86xpc00w71ew5b6) is now a manager.To add a worker to this swarm, run the following command:docker swarm join --token SWMTKN-1-47z6jld2o465z30dl7pie2kqe4oyug4fxdtbgkfjqgybsy4esl-8r55lxhxs7ozfil45gedd5b8a 192.168.99.100:2377To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
如果你的 Docker 主機(jī)有多個(gè)網(wǎng)卡,擁有多個(gè) IP,必須使用 –advertise-addr 指定 IP。?
執(zhí)行 docker swarm init 命令的節(jié)點(diǎn)自動(dòng)成為管理節(jié)點(diǎn)。
命令?docker info?可以查看 swarm 集群狀態(tài):
Containers: 0 Running: 0 Paused: 0 Stopped: 0...snip... Swarm: activeNodeID: dxn1zf6l61qsb1josjja83ngzIs Manager: trueManagers: 1Nodes: 1...snip...- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
命令?docker node ls?可以查看集群節(jié)點(diǎn)信息:
docker@manager1:~$ docker node ls ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS 1ipck4z2uuwf11f4b9mnon2ul * manager1 Ready Active Leader- 1
- 2
- 3
退出虛擬主機(jī)
docker@manager1:~$ exit- 1
增加工作節(jié)點(diǎn)
上一步初始化了一個(gè) Swarm 集群,擁有了一個(gè)管理節(jié)點(diǎn),在 Docker Machine 一節(jié)中我們了解到 Docker Machine 可以在數(shù)秒內(nèi)創(chuàng)建一個(gè)虛擬的 Docker 主機(jī),下面我們使用它來(lái)創(chuàng)建兩個(gè) Docker 主機(jī),并加入到集群中。
創(chuàng)建虛擬主機(jī) worker1
創(chuàng)建主機(jī)
$ docker-machine create -d virtualbox worker1- 1
進(jìn)入虛擬主機(jī) worker1
$ docker-machine ssh worker1- 1
加入 swarm 集群
docker@worker1:~$ docker swarm join \--token SWMTKN-1-47z6jld2o465z30dl7pie2kqe4oyug4fxdtbgkfjqgybsy4esl-8r55lxhxs7ozfil45gedd5b8a \192.168.99.100:2377This node joined a swarm as a worker.- 1
- 2
- 3
- 4
- 5
退出虛擬主機(jī)
docker@worker1:~$ exit- 1
創(chuàng)建虛擬主機(jī) worker2
創(chuàng)建
$ docker-machine create -d virtualbox worker2- 1
入虛擬主機(jī)worker2
$ docker-machine ssh worker2- 1
加入 swarm 集群
docker@worker2:~$ docker swarm join \--token SWMTKN-1-47z6jld2o465z30dl7pie2kqe4oyug4fxdtbgkfjqgybsy4esl-8r55lxhxs7ozfil45gedd5b8a \192.168.99.100:2377This node joined a swarm as a worker.- 1
- 2
- 3
- 4
- 5
退出虛擬主機(jī)
docker@worker2:~$ exit- 1
兩個(gè)工作節(jié)點(diǎn)添加完成
查看集群
進(jìn)入管理節(jié)點(diǎn):
docker-machine ssh manager1- 1
宿主機(jī)子上查看虛擬主機(jī)
docker@manager1:~$ docker-machine ls NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS manager1 * virtualbox Running tcp://192.168.99.100:2376 v17.12.1-ce worker1 - virtualbox Running tcp://192.168.99.101:2376 v17.12.1-ce worker2 - virtualbox Running tcp://192.168.99.102:2376 v17.12.1-ce- 1
- 2
- 3
- 4
- 5
在主節(jié)點(diǎn)上面執(zhí)行 docker node ls 查詢集群主機(jī)信息
docker@manager1:~$ docker node ls ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS 1ipck4z2uuwf11f4b9mnon2ul * manager1 Ready Active Leader rtcpqgcn2gytnvufwfveukgrv worker1 Ready Active te2e9tr0qzbetjju5gyahg6f7 worker2 Ready Active- 1
- 2
- 3
- 4
- 5
這樣我們就創(chuàng)建了一個(gè)最小的 Swarm 集群,包含一個(gè)管理節(jié)點(diǎn)和兩個(gè)工作節(jié)點(diǎn)。
部署服務(wù)
我們使用 docker service 命令來(lái)管理 Swarm 集群中的服務(wù),該命令只能在管理節(jié)點(diǎn)運(yùn)行。
新建服務(wù)
進(jìn)入集群管理節(jié)點(diǎn):
docker-machine ssh manager1- 1
使用 docker 中國(guó)鏡像
docker search alpine docker pull registry.docker-cn.com/library/alpine- 1
- 2
現(xiàn)在我們?cè)谏弦还?jié)創(chuàng)建的 Swarm 集群中運(yùn)行一個(gè)名為 helloworld 服務(wù)。
docker@manager1:~$ docker service create --replicas 1 --name helloworld alpine ping ityouknow.com rwpw7eij4v6h6716jvqvpxbyv overall progress: 1 out of 1 tasks 1/1: running [==================================================>] verify: Service converged- 1
- 2
- 3
- 4
- 5
命令解釋:
- docker service create?命令創(chuàng)建一個(gè)服務(wù)
- --name?服務(wù)名稱命名為?helloworld
- --replicas?設(shè)置啟動(dòng)的示例數(shù)
- alpine指的是使用的鏡像名稱,ping ityouknow.com指的是容器運(yùn)行的bash
使用命令?docker service ps rwpw7eij4v6h6716jvqvpxbyv?可以查看服務(wù)進(jìn)展
docker@manager1:~$ docker service ps rwpw7eij4v6h6716jvqvpxbyv ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS rgroe3s9qa53 helloworld.1 alpine:latest worker1 Running Running about a minute ago- 1
- 2
- 3
使用 docker service ls 來(lái)查看當(dāng)前 Swarm 集群運(yùn)行的服務(wù)。
docker@manager1:~$ docker service ls ID NAME MODE REPLICAS IMAGE PORTS yzfmyggfky8c helloworld replicated 0/1 alpine:latest- 1
- 2
- 3
監(jiān)控集群狀態(tài)
登錄管理節(jié)點(diǎn) manager1
docker-machine ssh manager1- 1
運(yùn)行?docker service inspect --pretty <SERVICE-ID>?查詢服務(wù)概要狀態(tài),以 helloworld 服務(wù)為例:
docker@manager1:~$ docker service inspect --pretty helloworldID: rwpw7eij4v6h6716jvqvpxbyv Name: helloworld Service Mode: ReplicatedReplicas: 1 Placement: UpdateConfig:Parallelism: 1On failure: pauseMonitoring Period: 5sMax failure ratio: 0...Rollback order: stop-first ContainerSpec:Image: alpine:latest@sha256:7b848083f93822dd21b0a2f14a110bd99f6efb4b838d499df6d04a49d0debf8bArgs: ping ityouknow.com Resources: Endpoint Mode: vip- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
運(yùn)行?docker service inspect helloworld?查詢服務(wù)詳細(xì)信息。
運(yùn)行docker service ps <SERVICE-ID>?查看那個(gè)節(jié)點(diǎn)正在運(yùn)行服務(wù):
docker@manager1:~$ docker service ps helloworld NAME IMAGE NODE DESIRED STATE LAST STATE helloworld.1.8p1vev3fq5zm0mi8g0as41w35 alpine worker1 Running Running 3 minutes- 1
- 2
- 3
在工作節(jié)點(diǎn)查看任務(wù)的執(zhí)行情況
docker-machine ssh worker1- 1
在節(jié)點(diǎn)執(zhí)行docker ps?查看容器的運(yùn)行狀態(tài)。
docker@worker1:~$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 96bf5b1d8010 alpine:latest "ping ityouknow.com" 4 minutes ago Up 4 minutes helloworld.1.rgroe3s9qa53lf4u4ky0tzcb8- 1
- 2
- 3
這樣的話,我們?cè)?Swarm 集群中成功的運(yùn)行了一個(gè) helloworld 服務(wù),根據(jù)命令可以看出在 worker1 節(jié)點(diǎn)上運(yùn)行。
彈性伸縮實(shí)驗(yàn)
我們來(lái)做一組實(shí)驗(yàn)來(lái)感受 Swarm 強(qiáng)大的動(dòng)態(tài)水平擴(kuò)展特性,首先動(dòng)態(tài)調(diào)整服務(wù)實(shí)例個(gè)數(shù)。
調(diào)整實(shí)例個(gè)數(shù)
增加或者減少服務(wù)的節(jié)點(diǎn)數(shù)
調(diào)整 helloworld 的服務(wù)實(shí)例數(shù)為2個(gè)
docker service update --replicas 2 helloworld- 1
查看那個(gè)節(jié)點(diǎn)正在運(yùn)行服務(wù):
docker service ps helloworld ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS rgroe3s9qa53 helloworld.1 alpine:latest manager1 Running Running 8 minutes ago a61nqrmfhyrl helloworld.2 alpine:latest worker2 Running Running 9 seconds ago- 1
- 2
- 3
- 4
調(diào)整 helloworld 的服務(wù)實(shí)例數(shù)為1個(gè)
docker service update --replicas 1 helloworld- 1
再次查看節(jié)點(diǎn)運(yùn)行情況:
docker service ps helloworld ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS a61nqrmfhyrl helloworld.2 alpine:latest worker2 Running Running about a minute ago- 1
- 2
- 3
再次調(diào)整 helloworld 的服務(wù)實(shí)例數(shù)為3個(gè)
docker service update --replicas 3 helloworld helloworld overall progress: 3 out of 3 tasks 1/3: running [==================================================>] 2/3: running [==================================================>] 3/3: running [==================================================>] verify: Service converged- 1
- 2
- 3
- 4
- 5
- 6
- 7
查看節(jié)點(diǎn)運(yùn)行情況:
docker@manager1:~$ docker service ps helloworld ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS mh7ipjn74o0d helloworld.1 alpine:latest worker2 Running Running 40 seconds ago 1w4p9okvz0xw helloworld.2 alpine:latest manager1 Running Running 2 minutes ago snqrbnh4k94y helloworld.3 alpine:latest worker1 Running Running 32 seconds ago- 1
- 2
- 3
- 4
- 5
刪除集群服務(wù)
docker service rm helloworld- 1
調(diào)整集群大小
動(dòng)態(tài)調(diào)整 Swarm 集群的工作節(jié)點(diǎn)。
添加集群
創(chuàng)建虛擬主機(jī) worker3
$ docker-machine create -d virtualbox worker3- 1
入虛擬主機(jī) worker3
$ docker-machine ssh worker3- 1
加入swarm 集群
docker@worker3:~$ docker swarm join \--token SWMTKN-1-47z6jld2o465z30dl7pie2kqe4oyug4fxdtbgkfjqgybsy4esl-8r55lxhxs7ozfil45gedd5b8a \192.168.99.100:2377This node joined a swarm as a worker.- 1
- 2
- 3
- 4
- 5
退出虛擬主機(jī)
docker@worker3:~$exit- 1
在主節(jié)點(diǎn)上面執(zhí)行 docker node ls 查詢集群主機(jī)信息
登錄主節(jié)點(diǎn)
docker-machine ssh manager1- 1
查看集群節(jié)點(diǎn)
docker@manager1:~$ docker node ls ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS j0o7sykkvi86xpc00w71ew5b6 * manager1 Ready Active Leader xwv8aixasqraxwwpox0d0bp2i worker1 Ready Active ij3z1edgj7nsqvl8jgqelrfvy worker2 Ready Active i31yuluyqdboyl6aq8h9nk2t5 worker3 Ready Active- 1
- 2
- 3
- 4
- 5
- 6
可以看出集群節(jié)點(diǎn)多了 worker3
退出 Swarm 集群
如果 Manager 想要退出 Swarm 集群, 在 Manager Node 上執(zhí)行如下命令:
docker swarm leave- 1
就可以退出集群,如果集群中還存在其它的 Worker Node,還希望 Manager 退出集群,則加上一個(gè)強(qiáng)制選項(xiàng),命令行如下所示:
docker swarm leave --force- 1
在 Worker2 上進(jìn)行退出測(cè)試,登錄 worker2 節(jié)點(diǎn)
docker-machine ssh worker2- 1
執(zhí)行退出命令
docker swarm leave- 1
查看集群節(jié)點(diǎn)情況:
docker@manager1:~$ docker node ls ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS j0o7sykkvi86xpc00w71ew5b6 * manager1 Ready Active Leader xwv8aixasqraxwwpox0d0bp2i worker1 Ready Active ij3z1edgj7nsqvl8jgqelrfvy worker2 Down Active i31yuluyqdboyl6aq8h9nk2t5 worker3 Ready Active- 1
- 2
- 3
- 4
- 5
- 6
可以看出集群節(jié)點(diǎn) worker2 狀態(tài)已經(jīng)下線
也可以再次加入
docker@worker2:~$ docker swarm join \ > --token SWMTKN-1-47z6jld2o465z30dl7pie2kqe4oyug4fxdtbgkfjqgybsy4esl-8r55lxhxs7ozfil45gedd5b8a \ > 192.168.99.100:2377 This node joined a swarm as a worker.- 1
- 2
- 3
- 4
再次查看
docker@manager1:~$ docker node ls ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS j0o7sykkvi86xpc00w71ew5b6 * manager1 Ready Active Leader xwv8aixasqraxwwpox0d0bp2i worker1 Ready Active 0agpph1vtylm421rhnx555kkc worker2 Ready Active ij3z1edgj7nsqvl8jgqelrfvy worker2 Down Active i31yuluyqdboyl6aq8h9nk2t5 worker3 Ready Active- 1
- 2
- 3
- 4
- 5
- 6
- 7
可以看出集群節(jié)點(diǎn) worker2 又重新加入到了集群中
重新搭建命令
使用 VirtualBox 做測(cè)試的時(shí)候,如果想重復(fù)實(shí)驗(yàn)可以將實(shí)驗(yàn)節(jié)點(diǎn)刪掉再重來(lái)。
//停止虛擬機(jī) docker-machine stop [arg...] //一個(gè)或多個(gè)虛擬機(jī)名稱docker-machine stop manager1 worker1 worker2- 1
- 2
- 3
- 4
- 1
- 2
- 3
- 4
停止、刪除虛擬主機(jī)后,再重新創(chuàng)建即可。
總結(jié)
通過(guò)對(duì) Swarm 的學(xué)習(xí),強(qiáng)烈感覺(jué)到自動(dòng)化水平擴(kuò)展的魅力,這樣在公司流量爆發(fā)的時(shí)候,只需要執(zhí)行一個(gè)命令就可以完成實(shí)例上線。如果再根據(jù)公司的業(yè)務(wù)流量做自動(dòng)化控制,那就真正實(shí)現(xiàn)了完全自動(dòng)的動(dòng)態(tài)伸縮。
舉個(gè)例子,我們可以利用腳本監(jiān)控公司的業(yè)務(wù)流量,當(dāng)流量是某個(gè)級(jí)別的時(shí)候我們啟動(dòng)對(duì)應(yīng)的N個(gè)節(jié)點(diǎn)數(shù),當(dāng)流量減少的時(shí)候我們也動(dòng)態(tài)的減少服務(wù)實(shí)例個(gè)數(shù),既可以節(jié)省公司資源,也不用操心業(yè)務(wù)爆發(fā)被流量擊垮。Docker 能發(fā)展的這么好還是有原因的,容器化是 DevOps 最重要的一個(gè)環(huán)節(jié),未來(lái)容器化的技術(shù)會(huì)越來(lái)越豐富和完善,智能化運(yùn)維可期待。
總結(jié)
以上是生活随笔為你收集整理的Docker(六):Docker 三剑客之 Docker Swarm的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Docker(五):Docker 三剑客
- 下一篇: MyBatis的架构和其运行流程