本博客为JDGan自修Docker的笔记,如有粗鄙之处,还请见谅~
阅读本博客前,请确定掌握了前一篇blog:docker 服务。
Docker 集群
Docker 里,群是一组运行着 Docker 的计算机,再把这个运行着的群,加入到一个群组里,集中起来管理,就是Docker 的集群。这样一个一个的群,称为 nodes,而发起并集中管理的 node,称为 swarm manager,其他 node 称为 worker。worker 没有操作集群的权限。
配置集群
作为 swarm manager 启动集群
$ docker swarm init
作为 swarm manager 指定 ip 启动集群
$ docker swarm init --advertise-addr <ip>:<port>
作为 worker 加入指定集群
$ docker swarm join --token <token> <ip>:<port>
在 swarm manager 中查看所有 nodes
$ docker node ls
发布 app 到集群
集群启动完成以后,可以直接使用例如上一章用到的docker-compose.yml
,放到 swarm manager 的 home directory。
version: "3"
services:
web:
image: $username/$repository:$tag
deploy:
replicas: 5
resources:
limits:
cpus: "0.1"
memory: 50M
restart_policy:
condition: on-failure
ports:
- "80:80"
networks:
- webnet
networks:
webnet:
类似的,用下面的命令部署 app
$ docker stack deploy -c docker-compose.yml getstartedlab
成功后即可查看
$ docker stack ps getstartedlab
ID NAME IMAGE NODE DESIRED STATE
muc0g4py7u6g test_web.1 username/repo:tag node1 Running
sil8jzmjqxpt test_web.2 username/repo:tag node2 Running
vryfp1iz6e5a test_web.3 username/repo:tag node2 Running
nb3bnumfosed test_web.4 username/repo:tag node1 Running
khoxuflpcqgb test_web.5 username/repo:tag node2 Running
退出 app
$ docker stack rm getstartedlab
退出集群,集群控制器最好使用--force
$ docker swarm leave --force