Docker是開源的應用容器引擎,能很好地支持DevOps中相當重要的云計算,為了搭建完整的應用級別的Docker環境,我們一起開始探索吧。
本篇知識點如下,將分為三部分來介紹:
Docker Swarm(本篇)
先來看兩張圖
Docker Swarm是用于創建Docker主機(運行Docker守護進程的服務器)集群的工具,使用Swarm操作集群,會使用戶感覺就像是在一臺主機上進行操作。
在我們演示之前,請準備:至少2臺可以互相聯網的機器,并安裝好Docker 1.12或以上版本。
1 初始化 Swarm
在一臺機器上,通過運行init命令,初始化一個Leader(默認端口:2377)
若忘記token,可以運行以下命令查詢manager的tokern
2 加入集群
3 在Leader機器上查看
4 創建服務
docker service create --name my_web --replicas 4 --publish 9001:80 nginx
稍微講解一下參數
docker service create:創建服務的命令
--name my_web:指定服務的名字
--replicas 3:指定創建容器的實例數量
--publish 9001:80:將主機的9001端口映射到容器的80端口上
nginx:鏡像名稱
注意,可以在集群中任意一臺機器上進行操作
運行完后,我們可以通過:docker service ls 來查看服務的運行狀態
可以看到在第一臺主機上,有my_web.2, my_web.3兩個容器實例正在運行,而在另外一臺主機上有my_web.1, my_web.4兩個容器實例在運行(隨機分配的)
5 Scale 橫向擴展
在需要擴展服務里,可能通過 docker service update命令來進行操作:
docker service update my_web --replicas 5
這個命令將原來的my_web服務的實例數變成了:5
使用Docker Swarm的神奇之處在于,在任意一臺主機上進行訪問,都可以訪問創建的nginx服務,原因是docker會在iptables中注冊相應的端口,我們可以在任意主機上查看iptable來驗證
iptables -nL --line-number
另一個使用Docker Swarm的神奇之處,是docker會幫我們管理容器,比如我們剛剛調整了容器的實例個數為:5,那docker swarm就會確保總是有5個可用的實例在運行,我們可以通過人為地停止某一個容器實例,過一會兒,我們就會發現,docker swarm幫我們創建了另外一個新的容器實例,補全了5個。而之前那個被中止的容器(尸體)還在,我們可以對其進行檢查操作。
6 刪除服務
最后,當我們不需要服務里,可以通過 docker service rm命令來移除服務
總之,Docker Swarm能非常方便地幫我們編排我們的容器實例,操作也相當的簡單。