swarm-guide

创建两个虚拟机

1
2
$ docker-machine create --driver virtualbox myvm1
$ docker-machine create --driver virtualbox myvm2

登陆虚拟机,并以root权限修改配置

1
2
$ docker-machine ssh myvm1
$ sudo -i

创建Swarm集群

1
2
$ docker-machine ssh myvm1 "docker swarm init --advertise-addr 192.168.99.100:2377"
$ docker-machine ssh myvm2 "docker swarm join --token <token> <ip>:<port>"

创建

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$ vi getstartedlab.yml
version: "3"
services:
web:
image: docker pull nginx:1.10.1-alpine
deploy:
replicas: 5
resources:
limits:
cpus: "0.1"
memory: 50M
restart_policy:
condition: on-failure
ports:
- "80:80"
networks:
- webnet
networks:
webnet:
$ docker-machine scp getstartedlab.yml myvm1:~
$ docker-machine ssh myvm1 "docker stack deploy -c getstartedlab.yml getstartedlab"

查看

1
2
3
4
5
6
7
8
$ docker-machine ssh myvm1 "docker stack ps getstartedlab"

ID NAME IMAGE NODE DESIRED STATE
jq2g3qp8nzwx test_web.1 username/repo:tag myvm1 Running
88wgshobzoxl test_web.2 username/repo:tag myvm2 Running
vbb1qbkb0o2z test_web.3 username/repo:tag myvm2 Running
ghii74p9budx test_web.4 username/repo:tag myvm1 Running
0prmarhavs87 test_web.5 username/repo:tag myvm2 Running

服务访问

滚动升级

1
docker service update --image redis:3.0.7 redis

封锁节点

1
2
docker node update --availability drain <NODE-ID>
docker node update --availability active <NODE-ID>

概念

stack > service > task

1
2
3
4
5
docker stack ls              # List all running applications on this Docker host
docker stack deploy -c <composefile> <appname> # Run the specified Compose file
docker stack services <appname> # List the services associated with an app
docker stack ps <appname> # List the running containers associated with an app
docker stack rm <appname> # Tear down an application
显示 Gitment 评论