Docker入门系列(五):增加一个可持久化的访问计数

准备工作

介绍

第四节中,介绍了如何启动swarm,如何将服务部署到多台机器之上。在这一节中,将着重介绍stack,所谓的stack就是一组相互关联的服务,它们能够共享一些依赖,能够并一起编排和扩容。在第三节中,介绍了一个单服务的stack,这个stack中只有一个服务,只运行在一台宿主机上。在这一节中,将介绍多服务的stack,并运行在多台机器之上。

添加一个新的服务并部署

添加服务非常的简单,只需要编辑docker-compose.yml,添加相关的服务信息。比如,给swarm机器添加一个可视化的服务,展示swarm集群的机器和服务信息。

  1. 编辑docker-compose.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
version: "3"
services:
web:
# replace username/repo:tag with your name and image details
image: ruccsbingo/get-started:part2
deploy:
replicas: 5
resources:
limits:
cpus: "0.1"
memory: 50M
restart_policy:
condition: on-failure
ports:
- "4000:80"
networks:
- webnet
visualizer:
image: dockersamples/visualizer:stable
ports:
- "8080:8080"
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
deploy:
placement:
constraints: [node.role == manager]
networks:
- webnet
networks:
webnet:

docker-compose.yml中增加了visualizer的相关配置项。

  1. 配置shell,连接上myvm1的docker环境
  2. 在swarm manager上执行docker stack deploy重新部署服务
1
2
3
4
$ docker stack deploy -c docker-compose.yml getstartedlab
Creating network getstartedlab_webnet
Creating service getstartedlab_web
Creating service getstartedlab_visualizer
  1. 在浏览器中验证visualizer是否安装成功

B5308526-E53E-411C-9D85-86272C1B38D9

持久化数据

重复上面的过程,在给我们的stack中添加redis服务。

  1. 编辑docker-compose.yml添加redis的依赖
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
version: "3"
services:
web:
# replace username/repo:tag with your name and image details
image: ruccsbingo/get-started:part2
deploy:
replicas: 5
resources:
limits:
cpus: "0.1"
memory: 50M
restart_policy:
condition: on-failure
ports:
- "4000:80"
networks:
- webnet
visualizer:
image: dockersamples/visualizer:stable
ports:
- "8080:8080"
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
deploy:
placement:
constraints: [node.role == manager]
networks:
- webnet
redis:
image: redis
ports:
- "6379:6379"
volumes:
- /home/docker/data:/data
deploy:
placement:
constraints: [node.role == manager]
command: redis-server --appendonly yes
networks:
- webnet
networks:
webnet:

Note:

  • image: redis,在Docker library中有redis的官方镜像,因此,此处可以使用简称
  1. 在manager上创建data目录,用于持久化redis中的数据
1
docker-machine ssh myvm1 "mkdir ./data"
  1. 确保当前shell环境连上manager,接下来的命令都需要在manager上执行
  2. 在manager上执行docker stack deploy
1
$ docker stack deploy -c docker-compose.yml getstartedlab
  1. 执行docker service ls验证服务启动情况
1
2
3
4
5
docker@myvm1:~$ docker service ls
ID NAME MODE REPLICAS IMAGE PORTS
nylj70biukz0 getstartedlab_redis replicated 1/1 redis:latest *:6379->6379/tcp
mval7ra97snr getstartedlab_visualizer replicated 1/1 dockersamples/visualizer:stable *:8080->8080/tcp
3qutabj1gipx getstartedlab_web replicated 5/5 ruccsbingo/get-started:part2 *:4000->80/tcp
  1. 在浏览器中验证redis中的计数情况

  1. 查看visualizer,观察机器中的服务

恭喜你,一个完成的stack配置完成了。

Comentarios