新聞中心
Docker Swarm 是 Docker 官方三劍客項(xiàng)目之一,提供 Docker 容器集群服務(wù),是 Docker 官方對(duì)容器云生態(tài)進(jìn)行支持的核心方案。使用它,用戶可以將多個(gè) Docker 主機(jī)封裝為單個(gè)大型的虛擬 Docker 主機(jī),快速打造一套容器云平臺(tái)。

創(chuàng)建一個(gè) swarm 集群
用這樣一條簡(jiǎn)單的命令:
$ docker swarm init
就足夠創(chuàng)建一個(gè) Swarm 了(雖然是一個(gè)只有簡(jiǎn)易管理節(jié)點(diǎn)的 Swarm,但已經(jīng)是 Swarm 集群的最簡(jiǎn)集合)。
$ docker node ls
ID HOSTNAME MEMBERSHIP STATUS AVAILABILITY MANAGER STATUS
7sytb3zk0yswdfky6mbh7nzk2 * moby Accepted Ready Active Leader
來看看多節(jié)點(diǎn)吧!只有一個(gè)節(jié)點(diǎn)的 Swarm,用途是有限的,所以讓我們來創(chuàng)建一個(gè)有兩個(gè)管理節(jié)點(diǎn)(manager nodes)和兩個(gè)工作節(jié)點(diǎn)(worker nodes)的 Swarm。 首先,我們來創(chuàng)建 4 個(gè) Docker 主機(jī)。Docker Machine 是完成此任務(wù)的理想工具,所以我們就用它。
$ docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
manager1 - virtualbox Running tcp://192.168.99.100:2376 v1.12.0-rc3
manager2 - virtualbox Running tcp://192.168.99.101:2376 v1.12.0-rc3
worker1 - virtualbox Running tcp://192.168.99.102:2376 v1.12.0-rc3
worker2 - virtualbox Running tcp://192.168.99.103:2376 v1.12.0-rc3
如果你手頭上沒有別的用 Machine 創(chuàng)建的主機(jī),那么在顯示集群節(jié)點(diǎn)時(shí),你的顯示信息就需要與下文給出的范例比較接近。
$ docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
manager1 - virtualbox Running tcp://192.168.99.100:2376 v1.12.0-rc3
manager2 - virtualbox Running tcp://192.168.99.101:2376 v1.12.0-rc3
worker1 - virtualbox Running tcp://192.168.99.102:2376 v1.12.0-rc3
worker2 - virtualbox Running tcp://192.168.99.103:2376 v1.12.0-rc3
初始化 Swarm
上文介紹了一種用 1.12 版引擎來創(chuàng)建 Swarm 的最簡(jiǎn)單的命令(提示:“docker swarm init”),但我們?cè)谶@里還將調(diào)用幾種附加選項(xiàng),讓集群主機(jī)可以互相通信,并在無需許可的情況下加入集群。
$ MANAGER1_IP=$(docker-machine ip manager1)
$ docker-machine ssh manager1 docker swarm init --auto-accept manager --auto-accept worker --listen-addr $MANAGER1_IP:2377
注意:–listen-addr 是 Swarm 內(nèi)不同節(jié)點(diǎn)互相訪問的地址
添加第二管理節(jié)點(diǎn)
Docker Swarm 命令中還需要添加一些選項(xiàng):
* join:表明一個(gè)新的節(jié)點(diǎn)將被添加進(jìn) Swarm
* –manager:表明節(jié)點(diǎn)的性質(zhì)(manager vs worker)
* –listen-addr:讓一個(gè)新添加的節(jié)點(diǎn)可以訪問 Swarm 內(nèi)的其他節(jié)點(diǎn)
* 最后的參數(shù)就是第一管理節(jié)點(diǎn)的地址(即這一命令將被送到的那個(gè)節(jié)點(diǎn))
***注意:*由于 –auto-accept manager 選項(xiàng)會(huì)在 Swarm 初始化的過程中被提供,所以第二管理節(jié)點(diǎn)會(huì)被自動(dòng)接受。如果沒有這一選項(xiàng),那么第二管理節(jié)點(diǎn)需要被第一管理節(jié)點(diǎn)手動(dòng)接受。
$ MANAGER2_IP=$(docker-machine ip manager2)
docker-machine ssh manager2 docker swarm join --manager --listen-addr $MANAGER2_IP:2377 $MANAGER1_IP:2377
添加工作節(jié)點(diǎn)
往集群內(nèi)添加工作節(jié)點(diǎn)的方式,跟添加管理節(jié)點(diǎn)幾乎相同:
$ WORKER1_IP=$(docker-machine ip worker1)
$ docker-machine ssh worker1 docker swarm join --listen-addr $WORKER1_IP:2377 $MANAGER1_IP:2377
$ WORKER2_IP=$(docker-machine ip worker2)
$ docker-machine ssh worker2 docker swarm join --listen-addr $WORKER2_IP:2377 $MANAGER1_IP:2377
***注意:*由于 –auto-accept worker 選項(xiàng)會(huì)在 Swarm 初始化的過程中被提供,所以工作節(jié)點(diǎn)會(huì)被自動(dòng)接受。如果沒有這一選項(xiàng),那么工作節(jié)點(diǎn)需要被管理節(jié)點(diǎn)手動(dòng)接受。
我們的 Swarm 看起來像什么呢?讓我們來看看。
$ docker-machine ssh manager1 docker node ls
ID HOSTNAME MEMBERSHIP STATUS AVAILABILITY MANAGER STATUS
109a5ufy8e3ey17unqa16wbj7 manager2 Accepted Ready Active Reachable
4chbn8uphm1tidr93s64zknbq * manager1 Accepted Ready Active Leader
8nw7g1q0ehwq1jrvid1axtg5n worker2 Accepted Ready Active
8rrdjg4uf9jcj0ma2uy8rkw5v worker1 Accepted Ready Active
現(xiàn)在每個(gè)節(jié)點(diǎn)都?xì)w屬于 Swarm,并都處在了待機(jī)狀態(tài)。管理節(jié)點(diǎn) 1 是領(lǐng)導(dǎo)者,一切都各居其位,井井有條,是什么使它如此特別呢? 這個(gè) Swarm 是得到安全傳輸層協(xié)議(TLS)保證的,能在設(shè)備外自動(dòng)認(rèn)證升級(jí)。
同樣,它也不再需要 Consul、Zookeeper 之類的鍵值存儲(chǔ),所有東西都在掌控之中。
新聞名稱:快速上手Docker Swarm
網(wǎng)站地址:http://m.fisionsoft.com.cn/article/dpsegpo.html


咨詢
建站咨詢
