Docker Swarm
什麼是Docker Swarm
- 從docker 1.12+ 開始
- 大概2016年中之後才開始流行
- 相依3.19+以上的linux kernel
- 可以看做kubernetes的分身(不包含完整infra)
- 在某個程度參考kubernetes運作
選擇Docker Swarm理由
- 落地方便
- 高可用性
- 價格便宜
Docker Swarm的組成
Node
- 區分兩種節點
- Manager
- Worker
- 可以隨時rolling update
Manager Node
- 主控制節點
- 同時也是Worker Node
- 不能失敗(控制整個Docker Swarm的部署)
- 對所有Worker Node發號施令
- 擁有所有Worker Node的狀態(不一定準確)
Worker Node
- Manager Node的小弟
- 不具備任何控制權限
- 看不到其他的Worker Node
Service
- 一個Service包含一種container
- Service啟動不代表container啟動
- 可以對container進行health check
- Service可以啟動複數個container(replicas)
Task
- 主要是由Service帶起來的
- 代表在docker container內執行的指令
- task會在node上到執行結束為止
Routing Mesh
- Internal Layer4 Load Balancer
- IPVS (IP Virtual Server)
- port 30000 ~ 32767
與docker swarm有關
- docker secret
- docker swarm
- docker stack
- docker service
安裝docker swarm
docker swarm init
以為這樣就結束了嗎?
docker login -u michael -p xxxx registry.gitlab.com
關於機敏資料的保護
docker之前的作法
- 全部都在環境變數內
- printenv可以取得全部的資料
- 方便,但不安全
secret
- 由docker daemon保護
- 由key value的方式保存檔案
api:
image: registry.gitlab.com/ixsecurity/key-server/high-availability/api:latest
deploy:
replicas: 5
restart_policy:
condition: on-failure
ports:
- 80:3000
volumes:
- type: volume
source: secret
target: /credential
volume:
nocopy: true
secrets:
- env
environment:
- DEBUG=key-server-api
depends_on:
- redis
關於部署docker swarm
- 推薦使用docker-compose
- version儘量在3以上
- depends_on沒什麼用
- 注意不支援的指令
部署方式
docker stack deploy --compose-file docker-compose.yml [stack] --with-registry-auth
docker stack ps [stack]
Docker一日工作坊P4 - Docker Swarm
By michael34435
Docker一日工作坊P4 - Docker Swarm
- 1,352