docker swarm 搭建模拟集群环境(三)

详细内容请查看个人博客:https://www.michloas.top/2019/02/23/docker-swarm-3/

在 Swarm 集群中使用 compose 文件

正如之前使用 docker-compose.yml 来一次配置、启动多个容器,在 Swarm 集群中也可以使用 compose 文件 (docker-compose.yml) 来配置、启动多个服务。

上一节中,我们使用 docker service create 一次只能部署一个服务,使用 docker-compose.yml 我们可以一次启动多个关联的服务。

我们以在 Swarm 集群中部署 WordPress 为例进行说明。

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 命令,下面我们对该命令进行详细讲解。

部署服务

部署服务使用 docker stack deploy,其中 -c 参数指定 compose 文件名。

docker stack deploy -c docker-compose.yml wordpress

现在我们打开浏览器输入 任一节点IP:8080 即可看到各节点运行状态。如下图所示:
在这里插入图片描述

在浏览器新的标签页输入 任一节点IP 即可看到 WordPress 安装界面,安装完成之后,输入 任一节点IP 即可看到 WordPress 页面。
在这里插入图片描述

查看服务

[root@localhost compose]# docker stack ls
NAME       SERVICES
wordpress  3

使用 docker service ls 来查看当前 Swarm 集群运行的服务。

[root@localhost compose]# docker service ls
ID            NAME                  MODE        REPLICAS  IMAGE
ldxsxk6tpw54  wordpress_wordpress   replicated  2/2       wordpress:latest
pctcposa5rik  wordpress_db          replicated  1/1       mysql:5.7
ri2aue23t1mj  wordpress_visualizer  replicated  1/1       dockersamples/visualizer:stable

使用 docker service ps 来查看某个服务的详情。

[root@localhost compose]# docker service ps wordpress_wordpress
ID            NAME                   IMAGE             NODE                   DESIRED STATE  CURRENT STATE        ERROR  PORTS
90gxpq73z6x5  wordpress_wordpress.3  wordpress:latest  localhost.localdomain  Running        Running 2 hours ago
itq9ql1iqakd  wordpress_wordpress.4  wordpress:latest  localhost.localdomain  Running        Running 2 hours ago
[root@localhost compose]# docker service ps wordpress_db
ID            NAME            IMAGE      NODE                   DESIRED STATE  CURRENT STATE        ERROR  PORTS
x3685shewj76  wordpress_db.1  mysql:5.7  localhost.localdomain  Running        Running 2 hours ago
[root@localhost compose]# docker service ps wordpress_visualizer
ID            NAME                    IMAGE                            NODE                   DESIRED STATE  CURRENT STATE        ERROR  PORTS
sitpybdh59hv  wordpress_visualizer.1  dockersamples/visualizer:stable  localhost.localdomain  Running        Running 2 hours ago

服务伸缩

我们可以使用 docker service scale 对一个服务运行的容器数量进行伸缩。

当业务处于高峰期时,我们需要扩展服务运行的容器数量。

[root@localhost compose]# docker service scale wordpress_wordpress=5
wordpress_wordpress scaled to 5
[root@localhost compose]# docker service ls
ID            NAME                  MODE        REPLICAS  IMAGE
ldxsxk6tpw54  wordpress_wordpress   replicated  4/5       wordpress:latest
pctcposa5rik  wordpress_db          replicated  1/1       mysql:5.7
ri2aue23t1mj  wordpress_visualizer  replicated  1/1       dockersamples/visualizer:stable

当业务平稳时,我们需要减少服务运行的容器数量。

[root@localhost compose]# docker service scale wordpress_wordpress=2
wordpress_wordpress scaled to 2
[root@localhost compose]# docker service ls
ID            NAME                  MODE        REPLICAS  IMAGE
ldxsxk6tpw54  wordpress_wordpress   replicated  2/2       wordpress:latest
pctcposa5rik  wordpress_db          replicated  1/1       mysql:5.7
ri2aue23t1mj  wordpress_visualizer  replicated  1/1       dockersamples/visualizer:stable

移除服务

使用命令 docker stack down 移除服务

[root@localhost compose]# 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

首先查看所有的volume,然后找到需要删除的即可

[root@localhost compose]# docker volume ls
DRIVER              VOLUME NAME
local               d259d2576970ec05faa9717622848336cdfac651de40853ccad5ddda233bcd0f
local               portainer_data
local               wordpress_db-data
[root@localhost compose]# docker volume rm wordpress_db-data
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值