使用 docker swarm
Dcoker 内置的集群管理的工具,Docker CE 1.12+
。注意与旧的 Docker Swarm
区分开来。
OS: CoreOS 1562.1.0 3个节点
OS: macOS + Docker Machine
Docker Swarm 在 Docker 1.12 版本之前属于一个独立的项目,在 Docker 1.12 版本发布之后,该项目合并到了 Docker 中,成为 Docker 的一个子命令 docker swarm
。
有关集群的 Docker 命令如下:
docker swarm
:集群管理,子命令有 init, join, join-token, leave, update
docker node
:节点管理,子命令有 demote, inspect, ls, promote, rm, ps, update
docker service
:服务管理,子命令有 create, inspect, ps, ls ,rm , scale, update
docker stack/deploy
:用于多应用部署 docker stack deploy ...
创建
使用 Docker Machine 创建集群
khs1994.com
备注:docker-machine create --swarm
等 --swarm*
是旧的 Docker Swarm
,与本文提到的 Swarm mode
没有关系。
Docker Machine:https://www.khs1994.com/docker/machine.html
1 | $ docker-machine create \ |
1 | $ docker-machine create \ |
1 | $ docker-machine create \ |
使用 docker-machine ssh MACHINE_NAME
通过 SSH 登录到机器。
CoreOS 集群
创建一个 CoreOS 3 节点集群:https://www.khs1994.com/docker/coreos/install-disk-new.html
初始化集群
在其中一个节点执行
1 | $ docker swarm init --advertise-addr 192.168.99.104 |
如果机器有多个网卡,请使用 --advertise-addr
参数指定 IP
之后执行
1 | $ docker swarm join-token [OPTIONS] (worker|manager) |
按照提示在另外两个节点执行命令加入集群。
查看节点
只能在管理节点使用此命令
1 | $ docker node ls |
创建服务
1 | $ docker service create --replicas 2 --name nginx nginx:alpine |
查看服务状态
1 | $ docker service ls |
查看服务详情
1 | $ docker service ps nginx |
负载均衡
1 | $ docker service create --replicas 2 --name nginx -p 7080:80 nginx:alpine |
查看服务状态
1 | $ docker service ps nginx |
退出一个节点
1 | $ docker service ps nginx |
coreos2
节点关机之后,原来空闲的 coreos3
节点自动启动了一个容器。
减少实例数量
1 | $ docker service scale nginx=2 |
docker stack
1 | $ docker stack deploy -c docker-stack.yml lnmp |