1.編排swarm簡介
學習怎麼将docker用于生産環境,前面學的是用于本地測試環境
之前學的是通過docker用戶端連接配接安裝好docker的linux機器,如下圖

生産環境下機器和容器都非常多,怎麼去管理容器?怎麼橫向擴充?如果容器down了怎麼恢複?如何更新容器不影響業務?如何監控容器?如何排程容器的建立?如何保護隐私資料?
swarm是内置于docker的容器編排工具
swarm叢集架構圖,有manager和worker兩種角色
manager至少有兩個,内置分布式存儲資料庫實作資料同步,這裡是通過Raft進行資料同步的,不會出現腦裂的情況,最終實作HA
worker之間通過gossip的網絡做資料同步
service和replicas,部署nginx的service,實際部署産生三個容器,三個容器通過排程系統,排程到不同的節點
也就是部署時,最初是不知道擴充節點會部署到哪裡的,由swarm通過排程算法去算的,看哪個機器目前空閑
服務建立和排程
在swarm manage做決策,決定将worker部署到哪裡
2.三節點swarm叢集的搭建
準備三台裝好docker的機器,這裡做一個manager,兩個worker
在主節點node01初始化swarm
運作完生成一行指令,子節點加入時,複制這一行代碼執行就可以
node02和node03分别作為worker加入
檢視目前swarm節點
節點退出swarm叢集
快速部署:
位址:https://labs.play-with-docker.com/
執行上面的步驟
3.建立維護Service并擴充
建立service
檢視service狀态
檢視service建立的container的情況
然後在對應節點可以檢視程序
将service橫向擴充
檢視一共有5個demo執行個體
不同節點檢視程序,5個service平均配置設定到manager和workder
node02中,删除一個容器
删完立刻去主節點檢視,少了一個demo執行個體
主節點檢視,會自動恢複
主節點删除service
4.使用DockerStack部署VotingApp
進入之前的/home/voting-example目錄,将之前的docker-compose.yml内容删掉
swarm模式編譯運作
檢視運作狀态
檢視運作詳細情況,多次執行,直到部署好
通路IP:5000是投票的頁面
通路IP:5001是檢視結果的頁面
叢集運作狀态下,将vote擴充為3個
檢視到多了一個執行個體
停止并删除所有service
5.使用DockerStack部署可視化應用
建立目錄
部署服務
檢視stack部署情況
浏覽器通路任意節點的9001端口
檢視stack執行個體
叢集運作狀态下,将stack-demo_portainer擴充為3個
浏覽器通路任意節點的9001端口,此時stack-demo_portainer變為了3個執行個體
删除stack執行個體
6.使用并管理DockerSecret
secret可以是使用者名和密碼,也可以是SSH key,可以是任何不想讓别人看到的資料
docker swarm的架構如下,manager節點有基于raft的内置的分布式存儲,是加密後存儲的,worker資訊也是加密是,也是分布式存儲的
随意建立一個檔案
建立secret
此時密碼已經存儲到manager的分布式存儲中了
檢視secret
也可以從标準輸入建立
再次檢視secret
删除secret
建立mysql的service
檢視程序運作的節點,這裡看到是node03運作的
node03中檢視程序
node03中互動運作mysql
互動運作時可以檢視密碼,然後用這個密碼登入mysql
7.更新service版本
建立demo網絡
檢視網絡
建立service,可以去dockerHub檢視nginx版本
通路80端口,會傳回一個歡迎頁
在node01寫一個腳本,不停通路
在另一個會話,更新service的版本到1.13
node02通路業務,自動切換到新版本
在另一個會話,更新通路端口
node02通路,檢視效果