官方文檔: https://docs.docker.com/engine/swarm/swarm-tutorial/
工作模式
搭建集群
docker swarm --help
# 查看私網IP地址
ip addr
docker swarm init --advertise-addr 192.168.98.224
To add a worker to this swarm, run the following command:
docker swarm join --token SWMTKN-1-2izj4yg08taobo19tjb9ci3r0w3lwkxxq8gvwx0d71zi71gize-8c4desxvd2mxt14zwv5sjneel 192.168.98.224:2377
To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
# 初始化主節點 后面可以加入主節點或者工作節點
docker swarm init
# 加入一個節點
docker swarm join
# 創建manager節點命令
docker swarm join-token manager
# 創建worker節點命令
docker swarm join-token worker
# 查看節點 只有manager節點可以使用該命令
docker node ls
# 離開集群
docker swarm leave
# 管理節點,解散集群
docker swarm leave --force
Raft一致性協議
保證大多數節點存活才可以使用
Swarm集群彈性創建服務
docker run : 容器啟動 不具備擴縮容
docker-compose up : 啟動一個項目、單機
dockck swarm : 集群, docker service .分布在不同主機上
# 啟動服務
docker service create -p 8888:80 --name swarm-nginx nginx
# 查看服務
docker service ps swarm-nginx
docker service ls
docker service inspect swarm-nginx
# 擴容
docker service update --replicas 3 swarm-nginx
# 或者使用 scale 擴容
docker servcie scale swarm-nginx=3
# 移除服務
docker service rm swarm-nginx
集群中任意的節點都可以訪問,服務可以有多個副本動態擴縮容實現高可用
概念總結
-
Swarm
集群的管理和編號;docker可以初始化一個swarm集群,其他節點可以加入(管理者、工作者) -
Node
就是一個Dokcer節點,多個節點組成一個網絡集群。 -
Service
任務,可以在管理節點或者工作節點運行。提供用戶訪問 -
Task
容器內的命令 細節任務
Docker Swarm
Service
docker service create流程
服務副本與全局服務
調整Service以什么方式運行
# 默認在工作節點創建服務
docker service create --mode replicated --name mytomcat tomcat:7
docker service create --mode global --name mytomcat tomcat:7
# 場景:日志收集、服務監控、狀態性能
每一個節點都有自己的日志收集器,過濾日志后把所有日志最終傳給日志中心
擴展
網絡模式: PublishMode: ingress
模式 | |
---|---|
Overlay | 跨機器互通 網絡變成一個整體 |
ingress | 特殊的Overlay網絡 具有負載均衡功能 |
docker network inspect ingress
Docker Stack
# 單機
docker-compose up -d wordpress.yml
# 集群
docker stack deploy wordpress.yml
Docker Secret
配置密碼、證書