• 在 Swarm 集群中使用 compose 文件
    • 部署服务
    • 查看服务
    • 移除服务

    在 Swarm 集群中使用 compose 文件

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

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

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

    1. version: "3"
    2. services:
    3. wordpress:
    4. image: wordpress
    5. ports:
    6. - 80:80
    7. networks:
    8. - overlay
    9. environment:
    10. WORDPRESS_DB_HOST: db:3306
    11. WORDPRESS_DB_USER: wordpress
    12. WORDPRESS_DB_PASSWORD: wordpress
    13. deploy:
    14. mode: replicated
    15. replicas: 3
    16. db:
    17. image: mysql
    18. networks:
    19. - overlay
    20. volumes:
    21. - db-data:/var/lib/mysql
    22. environment:
    23. MYSQL_ROOT_PASSWORD: somewordpress
    24. MYSQL_DATABASE: wordpress
    25. MYSQL_USER: wordpress
    26. MYSQL_PASSWORD: wordpress
    27. deploy:
    28. placement:
    29. constraints: [node.role == manager]
    30. visualizer:
    31. image: dockersamples/visualizer:stable
    32. ports:
    33. - "8080:8080"
    34. stop_grace_period: 1m30s
    35. volumes:
    36. - "/var/run/docker.sock:/var/run/docker.sock"
    37. deploy:
    38. placement:
    39. constraints: [node.role == manager]
    40. volumes:
    41. db-data:
    42. networks:
    43. overlay:

    Swarm 集群管理节点新建该文件,其中的 visualizer 服务提供一个可视化页面,我们可以从浏览器中很直观的查看集群中各个服务的运行节点。

    Swarm 集群中使用 docker-compose.yml 我们用 docker stack 命令,下面我们对该命令进行详细讲解。

    部署服务

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

    1. $ docker stack deploy -c docker-compose.yml wordpress

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

    使用 compose 文件 - 图1

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

    查看服务

    1. $ docker stack ls
    2. NAME SERVICES
    3. wordpress 3

    移除服务

    要移除服务,使用 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

    该命令不会移除服务所使用的 数据卷,如果你想移除数据卷请使用 docker volume rm