docker基礎(chǔ)四-swarms

本節(jié)我們將上一節(jié)中的應(yīng)用部署到服務(wù)器集群中。swarm使多個容器、多個機(jī)器的應(yīng)用連接在一起成為可能。

Understand swarm cluster

A swarm is a group of machines that are running Docker and joined into a aluster.

組成集群的機(jī)器可以使真實的計算機(jī)也可以是虛擬機(jī),在形成集群后,我們會通過一個swarm manager來管理集群中的各個節(jié)點。

swarm manager 可以不同的方式來運行容器,例如“emotiest node”--僅僅在其所需能力的最小范圍的規(guī)模的機(jī)器上運行特定的容器,或者“global“,這種模式下會在集群的所有節(jié)點運行特定容器。用戶可以通過配置compose文件來修改運行策略。

swarm manager 是一個集群中僅有的能夠執(zhí)行命令的一個機(jī)器,其余機(jī)器則僅僅提供運算資源。

當(dāng)我們在某個運行著容器的機(jī)器上對docker開啟swarm mode 時,該機(jī)器會被立即作為swarm manager,從此刻起,你在該機(jī)器上執(zhí)行的docker命令會在參與集群的所有機(jī)器上執(zhí)行。

Set up your swarm

開啟swarm模式說簡單其實也簡單,就兩條命令:

  • 開啟docker模式并設(shè)當(dāng)前機(jī)器為swarm manager
docker swarm init
  • 添加其他機(jī)器作為該集群的節(jié)點
docker swarm join

下面以windows10為例,創(chuàng)建兩個虛擬機(jī),并另其中一臺為manager,另一臺為worker:

  • 運行hyper-v manager
  • 點擊右側(cè)的虛擬交換機(jī)
  • 點擊創(chuàng)建虛擬交換機(jī),選擇外部
    -將交換機(jī)命名為myswitch
  • 打開命令行工具,運行以下命令
docker-machine create -d hyperv --hyperv-virtual-switch "myswitch" myvm1
docker-machine create -d hyperv --hyperv-virtual-switch "myswitch" myvm2
  • 查看創(chuàng)建的虛擬機(jī)
docker-machine ls
  • 將shell上下文切換到某個虛擬機(jī)中
docker-machine env myvm1
##輸出結(jié)果最后會出現(xiàn)以下命令
# Run this command to configure your shell:
# & "C:\Program Files\Docker\Docker\Resources\bin\docker-machine.exe" env myvm1 | Invoke-Expression

執(zhí)行命令后shell上下文即為myvm1。

  • 將myvm2添加為worker
docker swarm join --token <token> <ip>:2377
  • 查看集群的節(jié)點列表
docker node ls
  • 將shell環(huán)境切回本機(jī)
docker-machine env -u
 #按照提示執(zhí)行命令
Deploy the app on the swarm manager

現(xiàn)在我們已經(jīng)搭好了一個小型的集群模型,接下來,我們將應(yīng)用從swarm manager上部署到集群中:

  • 進(jìn)入swarm manager的shell環(huán)境下
  • 保證當(dāng)前目錄下存放著上一節(jié)中的docker-compose.yml文件
  • 運行命令:
docker stack deploy -c docker-compose.yml getstartedlab
  • 查看應(yīng)用的運行情況
docker stack ps getstartedlab

-查看集群節(jié)點的IP地址

docker-machine ls
  • 訪問任意一個節(jié)點,均能夠訪問到服務(wù)


    訪問節(jié)點ip

由于docker swarm load balancer的強(qiáng)大功能,所有的節(jié)點均能訪問到任意其他節(jié)點的服務(wù),這意味著即使某個節(jié)點并沒有運行相關(guān)的服務(wù),仍然可以通過該節(jié)點從外部訪問。

在開啟集群模式之前,應(yīng)將節(jié)點的一下端口打開

Port 7946 TCP/UDP for container network discovery.
Port 4789 UDP for the container ingress network.

停止集群工作
docker stack rm getstartedlab
#離開swarm模式
docker swarm leave
#切回本機(jī)環(huán)境
docker-machine env -u
#執(zhí)行輸出的命令即可
小結(jié)
docker-machine create --driver virtualbox myvm1 #Create a VM (Mac, Win7, Linux)
docker-machine create -d hyperv-virtual-switch "myswitch" myvm1 #Create a VM(windows10)
docker-machine env <machine-name>#查看機(jī)器信息
docker node ls #查看節(jié)點列表
docker-machine ls #查看機(jī)器列表
docker-machine start <machine-name> #啟動機(jī)器
docker stack deploy -c <file> <app>#部署應(yīng)用
docker-machine scp docker-compose.yml myvm1:~ #拷貝compose文件到節(jié)點機(jī)器上,僅當(dāng)使用ssh連接swarm manager機(jī)器時必須
docker stack rm <app name>#停止應(yīng)用
docker-machine stop <machine-name> #關(guān)閉節(jié)點機(jī)器
docker-machine rm #刪除機(jī)器
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容