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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Docker(六):Docker 三剑客之 Docker Swarm

發(fā)布時(shí)間:2025/3/21 编程问答 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Docker(六):Docker 三剑客之 Docker Swarm 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

實(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
//移除虛擬機(jī) docker-machine rm [OPTIONS] [arg...]docker-machine rm manager1 worker1 worker2
  • 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)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。