Docker Swarm

Docker Swarm是什麼?

是一個用於創建 Docker 主機集羣的工具,使用 Swarm 操作集羣,會使用戶感覺就像是在一臺主機上進行操作,docker1.12 集成了 swarmkit, 使你可以不用安裝額外的軟件包, 使用簡單的命令啓動創建docker swarm 集羣。

實驗環境:

這裏選擇三臺主機運行 Swarm,依次爲:

node1 192.168.182.100

node2 192.168.182.101

node3 192.168.182.102

做前基本操作

blob.png

blob.png

開啓路由轉發

blob.png

blob.png

檢查 docker 版本

blob.png

防洪牆

blob.png

設置主機名:

blob.png

blob.png

blob.png

node1

3 臺主機均修改/etc/hosts 文件,添加所有主機的 ip 地址和主機名的映射記錄

blob.png

開啓宿主機之間的端口

TCP 端口 2377 集羣管理端口

TCP UDP 端口 7946 節點之間通訊端口

TCP UDP 端口 4789 overlay 網絡通訊端口

blob.png

配置所有節點密鑰登錄.

配置所下節點密鑰互信, node1 可以免密碼登錄各節點,只在 node1 上執行:

生成 sshkey

blob.png

發佈 sshkey 到各個節點

blob.png

blob.png

blob.png

測試密鑰登錄

blob.png

創建 Swarm 集羣

node1 上初始化 swram 集羣:

只需要在一個 node1 上初始化 swarm 集羣, 其他 node 加入這個集羣就行了, 所以以

下命令只需要在 node1 上運行

blob.png

查看端口號監聽情況

blob.png

查看 swarm 集羣 node 列表

blob.png

node1 通過 ssh, node2-node3 上執行上面的加入集羣命令:

node2

blob.png

node3

blob.png

node1

再次檢查集羣節點列表, 我們可以看到所有的服務器都已經加入 swarm 集羣了

blob.png

查看 node2 docker info

現在我們可以看到, 已經有3manager節點了, 一個Leader節點, 一個Reachable節點.

在你也可以在 node2 上面管理整個 swarm 集羣

blob.png

總結:

docker swarm:集羣管理,子命令主要有下面幾個。

docker swarm init 命令用於初始化一個集羣

dockerswarm join 命令用於加入一個現有集羣

dockerswarm leave 命令由於離開集羣

blob.png

registry 的默認存儲路徑是/var/lib/registry,只是個臨時目錄,一段時間之後就會消失

所以使用-v 參數,指定個本地持久的路徑

blob.png

blob.png

blob.png

返回{"repositories":[]} 說明 registry 服務工作正常.

blob.png

鏡像信息存放在/var/lib/registry 目錄下,因此這裏將宿主機目錄映射到/var/lib/registry

所有主機都指向 registry 服務器:

停止 docker 服務

#systemctl stop docker

修改/usr/lib/systemd/system/docker.service,修改後保存退出


blob.png

blob.png

/usr/lib/systemd/system/docker.service傳給node2 node3

blob.png

重載 docker 服務並啓動 docker 服務

blob.png

測試本地鏡像倉庫

node2 主機上推送鏡像到 registry

需要先 tag 這個鏡像

blob.png

blob.png

blob.png

tag 後的鏡像上傳到 registry.

blob.png

push 成功後, 可以調用 registry API 查看 registry 中的鏡像

blob.png

blob.png

node3 主機測試從 registry 下載鏡像

blob.png

blob.png

node2

overlay 網絡

解決了鏡像構建問題, 爲了讓應用跑在 swram 集羣,我們還需要解決容器間的網絡訪問問
查看 swarm 集羣 node 列表

blob.png

docker 應用創建一個名爲 dockercoins overlay network

blob.png

查詢 docker network 列表

blob.png

docker service create 命令創建一個 service.
--name 標籤命名 service web1.
--replicas 標籤來聲明 1 個運行實體(即容器副本數)

注意, 我們啓動的鏡像名字 192.168.46.100:5000/centos:http 使用我們本地鏡像倉庫的鏡像名
, 這樣當主機上沒有這個鏡像時, 會自動到本地鏡像倉庫拉取鏡像

blob.png

使用 docker service ls 查看服務

blob.png

使用 docker serviceps<SERVICE-ID/NAME>查看服務運行在哪個節點上

blob.png

用瀏覽器訪問 http://192.168.46.100:8000 就能訪問測試頁

blob.png

--replicas 標籤來聲明 2 個運行實體

查看服務:

blob.png

從下圖可以看到 web1 service 目前只有一個副本.

blob.png

擴展已有的服務的副本數,這裏將 web1 服務擴展到 3 個副本

blob.png

縮減已有的服務的副本數,這裏將 web1 服務縮減到 2 個副本

blob.png


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章