docker_practice/swarm_mode/stack.md

99 lines
2.6 KiB
Markdown
Raw Normal View History

2017-11-26 09:54:16 +08:00
## 在 Swarm 集群中使用 compose 文件
2017-11-25 15:43:51 +08:00
2017-11-26 09:54:16 +08:00
正如之前使用 `docker-compose.yml` 来一次配置、启动多个容器,在 `Swarm` 集群中也可以使用 `compose` 文件 `docker-compose.yml` 来配置、启动多个服务。
2017-11-25 15:43:51 +08:00
上一节中,我们使用 `docker service create` 一次只能部署一个服务,使用 `docker-compose.yml` 我们可以一次启动多个关联的服务。
我们以在 `Swarm` 集群中部署 `WordPress` 为例进行说明。
```yaml
version: "3"
services:
wordpress:
image: wordpress
ports:
- 80:80
networks:
- overlay
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
deploy:
mode: replicated
replicas: 3
db:
image: mysql
networks:
- overlay
volumes:
- db-data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
deploy:
placement:
constraints: [node.role == manager]
visualizer:
image: dockersamples/visualizer:stable
ports:
- "8080:8080"
stop_grace_period: 1m30s
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
deploy:
placement:
constraints: [node.role == manager]
volumes:
db-data:
networks:
overlay:
```
`Swarm` 集群管理节点新建该文件,其中的 `visualizer` 服务提供一个可视化页面,我们可以从浏览器中很直观的查看集群中各个服务的运行节点。
`Swarm` 集群中使用 `docker-compose.yml` 我们用 `docker stack` 命令,下面我们对该命令进行详细讲解。
### 部署服务
2017-11-26 09:54:16 +08:00
部署服务使用 `docker stack deploy`,其中 `-c` 参数指定 compose 文件名。
2017-11-25 15:43:51 +08:00
```bash
$ docker stack deploy -c docker-compose.yml wordpress
```
现在我们打开浏览器输入 `任一节点IP:8080` 即可看到各节点运行状态。如下图所示:
![](image/wordpress.png)
在浏览器新的标签页输入 `任一节点IP` 即可看到 `WordPress` 安装界面,安装完成之后,输入 `任一节点IP` 即可看到 `WordPress` 页面。
### 查看服务
```bash
$ docker stack ls
NAME SERVICES
wordpress 3
```
### 移除服务
要移除服务,使用 `docker stack down`
```bash
$ docker stack down wordpress
Removing service wordpress_db
Removing service wordpress_visualizer
Removing service wordpress_wordpress
Removing network wordpress_overlay
Removing network wordpress_default
```
该命令不会移除服务所使用的 `数据卷`,如果你想移除数据卷请使用 `docker volume rm`