使用 compose 文件
正如之前使用 docker-compose.yml 来一次配置、启动多个容器,在 Swarm 集群中也可以使用 compose 文件 (docker-compose.yml) 来配置、启动多个服务。
上一节中,我们使用 docker service create 一次只能部署一个服务,使用 docker-compose.yml 我们可以一次启动多个关联的服务。
我们以在 Swarm 集群中部署 WordPress 为例进行说明。
1
version: "3"
2
3
services:
4
wordpress:
5
image: wordpress
6
ports:
7
- 80:80
8
networks:
9
- overlay
10
environment:
11
WORDPRESS_DB_HOST: db:3306
12
WORDPRESS_DB_USER: wordpress
13
WORDPRESS_DB_PASSWORD: wordpress
14
deploy:
15
mode: replicated
16
replicas: 3
17
18
db:
19
image: mysql
20
networks:
21
- overlay
22
volumes:
23
- db-data:/var/lib/mysql
24
environment:
25
MYSQL_ROOT_PASSWORD: somewordpress
26
MYSQL_DATABASE: wordpress
27
MYSQL_USER: wordpress
28
MYSQL_PASSWORD: wordpress
29
deploy:
30
placement:
31
constraints: [node.role == manager]
32
33
visualizer:
34
image: dockersamples/visualizer:stable
35
ports:
36
- "8080:8080"
37
stop_grace_period: 1m30s
38
volumes:
39
- "/var/run/docker.sock:/var/run/docker.sock"
40
deploy:
41
placement:
42
constraints: [node.role == manager]
43
44
volumes:
45
db-data:
46
networks:
47
overlay:
Copied!
Swarm 集群管理节点新建该文件,其中的 visualizer 服务提供一个可视化页面,我们可以从浏览器中很直观的查看集群中各个服务的运行节点。
Swarm 集群中使用 docker-compose.yml 我们用 docker stack 命令,下面我们对该命令进行详细讲解。

部署服务

部署服务使用 docker stack deploy,其中 -c 参数指定 compose 文件名。
1
$ docker stack deploy -c docker-compose.yml wordpress
Copied!
现在我们打开浏览器输入 任一节点IP:8080 即可看到各节点运行状态。如下图所示:
在浏览器新的标签页输入 任一节点IP 即可看到 WordPress 安装界面,安装完成之后,输入 任一节点IP 即可看到 WordPress 页面。

查看服务

1
$ docker stack ls
2
NAME SERVICES
3
wordpress 3
Copied!

移除服务

要移除服务,使用 docker stack down
1
$ docker stack down wordpress
2
Removing service wordpress_db
3
Removing service wordpress_visualizer
4
Removing service wordpress_wordpress
5
Removing network wordpress_overlay
6
Removing network wordpress_default
Copied!
该命令不会移除服务所使用的 数据卷,如果你想移除数据卷请使用 docker volume rm
Last modified 1yr ago