Docker Swarm 基礎操作,有這一篇文檔就可以了

我算是一個極保守的運維, 對於新技術,我會去學習,去研究,但卻很少去使用。運維是一個不斷需要學習的職位,但卻不是一個可以隨意折騰的工種。新的技術,新的方案可能會對我們的工作,對我們的架構有更好的幫助,但我們使用時候,更應該謹慎的實施,我們需要仔細的考慮一些問題,比如現有架構或技術是否有升級的必要;運維人員對新技術的掌握程度;升級帶來多大的風險;在一切都是Yes的情況下,我們又要敢於承擔責任,大膽的實施。


Docker Swarm 包涵兩個集群功能和微服務應用編排引擎兩方面。集群即指由多個Docker節點組成;編排引擎則指swarm自身提供豐富的API來管理微服務。在應用層面來說,簡單來講即是使用命令(api)來部署和管理微服務的swarm集群。


Docker Swarm 基礎操作,有這一篇文檔就可以了


前期你需要注意什麼

1. 服務器將磁盤分為數據盤與系統盤,將Docker swarm 的數據目錄修改為數據盤,嚴禁放入系統盤,否則會造成節點假死

2. 在各個節點之間開放Docker swarm 內部使用端口,否則會造成集群之間通信失敗。即以下端口

  1. 2377/tcp:用於客戶端與 Swarm 進行安全通信。
  2. 7946/tcp 與 7946/udp:用於控制面 gossip 分發。
  3. 4789/udp:用於基於 VXLAN 的覆蓋網絡。

3. 為了安全考慮,最好不要使用Root用戶操作,將普通用戶加入docker組即可。

4. Docker Swarm 使用Raft共識算法來實現管理節點的HA, 所以管理節點需要部署奇數個,建議3或5個。請自行查看Raft共識算法的一些知識。

5. Docker Swarm管理命令只可以在管理節點執行,工作節點不可使用。

Docker Swarm集群操作

切換到Swarm模式,並將此服務器設置為第一個管理節點

[xcc@xcc ~]$ docker swarm init


查看節點序列

[xcc@xcc ~]$ docker swarm join --token xxxxxxx xx.xx.xx.xx:2377


查看加入集群的token, worker為使加入節點作為工作節點, manager為使加入節點作為管理節點

[xcc@xcc ~]$ docker swarm join-token worker|manager

如:

[xcc@xcc ~]$ docker swarm join --token xxxxxxx xx.xx.xx.xx:2377


將節點加入集群

[xcc@xcc ~]$ docker swarm join --token xxxxxxx xx.xx.xx.xx:2377

docker swarm join \\

--token SWMTKN-1-5ibimzdof5ez8ej6sdudinmm8s79urmm6h28x1pnu02rasiyxa-1j9bsv6feebnumq386sngy647 \\

192.168.0.103:2377

離開(退出)此集群

離開(退出)此集群[xcc@xcc ~]$ docker swarm leave 

DockerSwarm 服務操作


服務是Docker Swarm中最小的調試單元, 即使用docker service create創建的單元,它是基於容器進行封裝,被稱為副本或任務,服務中包括擴縮容,滾動升級及回滾等特性。

創建一個新的服務

[xcc@xcc ~]$  docker service create

[xcc@xcc ~]$ docker service create --name test_1-p 8080:8080 --replicas 5 nginx

即創建一個有5個副本,名稱為test_1的Nginx集群,集群將內部8080端口映射為外部此端口。

注:

  1. 此命令有豐富 的參數,如: --network 指定網絡
  2. Docker swarm會輪詢檢查各個服務,如果狀態不一致,則其會自動調整,如某個副本退出,則swarm會自動啟動一個副本,以達到配置的要求
  3. 默認為副本模式,也可使用全局模式,此模式下一個docker節點固定的只啟動一個副本


查看所有的服務

[xcc@xcc ~]$ docker service ls


查看服務副本列表及各副本的狀態。

[xcc@xcc ~]$ docker service ps test_1


查看服務詳細的信息

[xcc@xcc ~]$ docker service inspect --pretty test_1


通過調整最後的數字,對服務進行擴容或者縮容

[xcc@xcc ~]$ docker service scale test_1=10


滾動升級

[xcc@xcc ~]$ docker service update --imageredis test_1


回退到上一個版本

命令: docker service logstest_1


查看test_1的日誌

[xcc@xcc ~]$ docker service logstest_1


刪除test_1服務

[xcc@xcc ~]$ docker service rm test_1



分享到:


相關文章: