筆記線上課程Docker Mastery Section 7內容及8/20+8/27讀書會內容
Swarm Intro
官方推的容器叢集管理工具
swarm:名詞-a large group of insects all moving together,不是天鵝(swarn)也不是蚯蚓(earthworm)
要解決
- 到處散亂的container
- 讓container的生命週期自動化
- 輕鬆的擴充/刪減container
- Tracking container status
- 確保container是run在信任的server上
工具
兩大熱門container管理工具
-
Kubernetes (k8s)
知識:原來是k+中間有8個字母+s的縮寫,同i18n
- 由Google開發的開源專案
-
Swarm
- 由Docker開發
- 簡單易用好上手
Docker Swarm
- 管理&調度container的平台
- Docker 1.12版後,內建Docker Swarm Mode
- 透過CLI/API來建立或管理swarm cluster
- 隨時調整container的運作數量
Docker swarm 預設Node主機之間會採用TLS進行認證和加密
docker swarm ca
查看憑證內容
2種角色Node
- Manager Node
- 負責資源調度
- mantain cluster
- management tasks
- Worker Node
- 負責運作容器
- 不參與資源調度
- receive and execute tasks from manager node
Raft 共識演算法:推出manager leader
Create Serivce
由swarm manager建立Service,Service定義manager或worker node上要執行的task(任務)。
在swarm manager執行docker service create
,依序分配IP位址給tasks,task會再指派給node;worker node執行task!
Swarm初始化
查看information 預設swarm mode是沒有被啟動的
docker info
要初始化後才有swarm相關指令可以用
EX:
- docker swarm
- docker node
- docker service
- docker stack
- docker secret
練習Time
docker info
:確認swarm狀態docker swarm init
:啟動swarmdocker node ls
:確認node目前狀態
init時 記得給ip
docker service create alpine ping 8.8.8.8
$ docker service create alpine ping 8.8.8.8
fwnuamylf06ee6gb4b4eswhy4
overall progress: 1 out of 1 tasks
1/1: running [==================================================>]
verify: Service converged
建立一個新的service,run alpine這個image執行container
docker service ls
$ docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
27dd224e9781 alpine:latest "ping 8.8.8.8" 14 seconds ago Up 13 seconds quizzical_cartwright.1.n412481vqc2ejbb1s36bs6pws
docker service ps <service name>
:查看task
$ docker service ps fwn
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
n412481vqc2e quizzical_cartwright.1 alpine:latest node1 Running Running 5 minutes ago
docker service update <service id> --replicas 3
:更新service,共要建立三個複本
$ docker service update fwn --replicas 3
fwn
overall progress: 3 out of 3 tasks
1/3: running [==================================================>]
2/3: running [==================================================>]
3/3: running [==================================================>]
verify: Service converged
docker container ls
一鍵複製多個複本!
docker container rm -f <name>.1.<id>
刪除其中一個container
swarm偵測到container少一個,會即時再Run一個新的,維持service run三個alpine container的狀態
Creating 3-Node Swarm
有三種方式可以模擬多台虛擬機的情境
- play-with-docker.com
- docker playground初學者的好朋友
- docker-machine + virtualBox
- 在本機利用docker-machine create建立多台虛擬機
- Digital Oocean
- 講師推薦(不貴,對入門者很夠用)
- VPS主機商, SSD固態硬碟
- 處理快又穩定
懶人如我,當然先選擇docker playground(?)
前面提到在swarm的世界裡,Node主機有兩種角色可以選擇
- Manager
- Worker
圖摘自Docker Swarm Docker Swarm Tutorial What Is Docker Swarm? Docker Swarm Setup Simplilearn
擔任Manager的主機指派Task給Worker主機,主機之間透過HTTP傳輸
練習Time
目標:建立4台主機分別指定2台為manager,2台為worker
建立4台Host (playground快樂建立)
在node 1主機執行swarm 初始化
docker swarm init --advertise-addr <ip> --listen-addr <ip>
node主機溝通靠 advertise-addr
service監聽連線靠listen-addr
可參考What’s the Docker Swarm “–advertise-addr”?
swarm會建立兩組token,分別for Manager和Worker
貼心顯示要加入manager和worker要用哪個指令哪個token
node1主機加入manager行列(?)
切換到node2主機
將node2也加入manager中,記得要加上自己的ip,讓其他node知道 who are you
切換到node3,4主機
加入worker行列
docker info
查看資訊 (check swarm的相關設定)
Swarm: active
NodeID: 9v6mjw7mi4443fsr4s03bu085
Is Manager: true
ClusterID: 2kccke7zrcz6jxsddwicg16bq
Managers: 2
Nodes: 4
Default Address Pool: 10.0.0.0/8
SubnetSize: 24
Data Path Port: 4789
Orchestration:
Task History Retention Limit: 5
Raft:
Snapshot Interval: 10000
Number of Old Snapshots to Retain: 0
Heartbeat Tick: 1
Election Tick: 10
Dispatcher:
Heartbeat Period: 5 seconds
CA Configuration:
Expiry Duration: 3 months
Force Rotate: 0
Autolock Managers: false
Root Rotation In Progress: false
Node Address: 192.168.0.10
Manager Addresses:
192.168.0.10:2377
192.168.0.13:2377
進到其中一台manager主機中,執行docker node ls
查看各node主機狀態
manager才有權限可以看到node 主機狀態
讀書會知識補充
好書推薦區
帆哥推薦資工系演算法用書:Introduction to Algorithms Hardcover – 1 Jan. 2009
演算法好炸人…..
昱廷推薦MS SQL書:Microsoft SQL Server 2016 設計實務
Coding速度區
昱廷推薦:英打練習遊戲
帆哥推薦:正確使用鍵盤-闖關遊戲