version: "3"
services:
web:
# replace username/repo:tag with your name and image details
image: hub.c.163.com/lingd3/friendlyhello:part2
deploy:
replicas: 5
resources:
limits:
cpus: "0.1"
memory: 50M
restart_policy:
condition: on-failure
ports:
- "80:80"
networks:
- webnet
networks:
webnet:
// 集群初始化命令
$ docker swarm init
// 给应用程序指定名字,运行
$ docker stack deploy -c docker-compose.yml getstartedlab
// 看到刚刚推出的五个容器的列表:
$ docker stack ps getstartedlab
// 查看服务id
$ docker service ls
//Docker将进行就地更新,无需首先从stack里移除或者杀死任何容器
docker stack deploy -c docker-compose.yml getstartedlab
移除命令如下:
// 从集群中移除应用
$ docker stack rm <appname>
// 移除集群
$ docker swarm leave --force
arm管理者是swarm中唯一可以执行命令或授权其他机器作为工作人员加入swarm的管理机器(加入的节点不能)。工作机器只是提供能力,没有权力告诉任何其他机器它可以做什么和不能做什么。
// 启用swarm模式,使您当前的机器成为群组管理器
$ docker swarm init
// 在其他机器上运行 ,让他们以工作人员身份加入群集
$ docker swarm join
docker-machine create --driver virtualbox myvm1
docker-machine create --driver virtualbox myvm2
现在我们有两个虚拟机,myvm1和myvm2。使用下面命令查看它们的ip地址和其他信息:
docker-machine ls
下面我们将第一个虚拟机myvm1设为管理员,它将执行Docker命令并认证其他工作者加入swarm;第二个虚拟机myvm2将是一个工作者:
// myvm1 成为一个管理者
docker-machine ssh myvm1 "docker swarm init --advertise-addr <ip>”
// myvm2 成为一个工作者
docker-machine ssh myvm2 "docker swarm join --token <token> <ip>:<port>"
docker-machine ssh myvm1 "docker node ls"
$ docker-machine scp docker-compose.yml myvm1:~
//将应用部署到集群上
docker@myvm1:~$docker stack deploy -c docker-compose.yml getstartedlab
// 移除应用程序
docker stack rm getstartedlab
//启动虚拟机
docker-machine start myvm1
docker-machine scp docker-compose.yml myvm1:~
//在管理员上运行命令进行更新
docker-machine ssh myvm1
docker stack deploy -c docker-compose.yml getstartedlab
// 通过运行docker stack ps <stack>来证明上面的可视化
docker@myvm1:~$ docker stack ps getstartedlab