1. 程式人生 > >Docker Swarm Mode 入門實踐

Docker Swarm Mode 入門實踐

本文來源

翻譯並總結官方文件,新增自定義示例,參考自Docker 19.03版本官方文件

未來可能歸檔為:https://docs.docker.com/v19.03/

2020.01.03為https://docs.docker.com/engine/swarm/

本文目標

本文主要演示建立一個小規模的Swarm叢集,包含一個管理節點與兩個工作節點,概念可以參考https://www.cnblogs.com/hellxz/p/12134386.html

  • 建立Docker Swarm叢集
  • 新增節點
  • 部署應用服務
  • 管理Swarm叢集

環境說明

  • 三臺安裝Docker的Linux虛擬機器:本文用Docker Machine建立虛擬機器
  • Docker版本:18.09.7,理論上1.12版本以後均可
  • 三臺虛擬機器網路互通

Docker Machine安裝參考我的上一篇文章,安裝Docker Machine

虛擬機器準備

實體機安裝Linux或Mac,跳過此節

本文通過一臺Linux虛擬機器中建立三個虛擬機器節點來操作的,虛擬機器記憶體可以開大些,另外需要配置開啟Intel VT-x/EPT或AMD-RVI(V)

另外,由於我們要做的實驗是在虛擬機器下的再建立虛擬機器,外部虛擬機器與虛擬機器內構成內網,在沒有設定代理的情況下,我們無法直接通過瀏覽器直接訪問

建立 Swarm 叢集(Create a swarm)

建立一個管理節點的虛擬機器

$ docker-machine create -d virtualbox manager

連線建立的管理節點虛擬機器

$ docker-machine ssh manager1

出現上圖已經進入虛擬機器了

初始化Swarm叢集

$ docker swarm init --advertise-addr 192.168.99.100

初始化完成,在多網絡卡的情況下,必須使用--advertise-addr指定IP,其它主機必須可以訪問此ip,輸出中包含新節點加入此節點的命令,我們只需要複製此命令到其它節點上執行

執行docker swarm init的節點自動成為管理節點,節點的ip是ssh到節點後ifconfig

查到的

新增節點命令要先複製出來,一會新增節點會用,如果沒複製也不要緊

在manager節點輸入docker swarm join-token 角色 就能提示token了,上邊複製的預設是worker角色的命令

輸入docker info檢視當前節點的Docker Swarm Mode已經處於啟用狀態了

執行docker node ls檢視當前Swarm叢集中節點的情況

*指示當前登入的節點

輸出exit退出當前登入的主機

向Swarm新增節點(Add nodes to the swarm)

建立第一個工作節點並ssh連線到這個節點上

$ docker-machine create -d virtualbox worker1
$ docker-machine ssh worker1

執行剛才複製的docker swarm join-token命令,忘了就先去manager節點下執行docker swarm join-token worker來檢視命令

$ docker swarm join --token SWMTKN-1-0kr7tkx9ku4rcrl1lny1o8chg9xl24h4nexmz1ctfwz43425uq-egecegeyfaet0volcvo15zia8 192.168.99.100:2377

This node joined a swarm as a worker.

接著建立個worker2,操作不再複述了

檢視叢集節點情況

連線manager節點,執行命令檢視叢集狀態

$ docker node ls

docker node ls命令僅可以在管理節點使用

部署服務到Swarm叢集(Deployed a service)

部署服務只需要使用docker service create加正常的docker命令,還可以指定建立幾個備份例項,這裡部署2個Nginx

$ docker service create --replicas 2 --name nginx -p 80:80 nginx:mainline-alpine

docker service create命令主要引數:

  • --name - 用來指定服務名,部署服務的容器名使用這個名稱作為字首
  • --replicas - 設定負載例項數

其餘引數請自行參考 docker service create --help文件

此命名僅能在manager節點執行

在Docker Swarm Mode簡介與核心概念 一文中,我們有談過:服務可以執行在Manager節點上,也可以執行在Worker節點上

部署服務的輸出並沒有提示具體將服務部署到哪個節點上,接下來我們看看節點情況

檢視服務

使用docker service ls檢視服務列表,檢視具體服務部署在哪個節點使用docker service ps 服務名

如圖,我們的服務一個部署到了manger節點上,一個部署在worker1節點上

檢查部署在Swarm叢集中的服務(Inspect the service)

通過docker service inspect命令檢查服務的詳細資訊,使用--pretty使輸出更易讀

$ docker service inspect --pretty nginx

除了這種簡單的方法外就是普通的辦法——去部署的節點上docker ps