Docker Swarm - Docker Stack

0.168字数 277阅读 10717

文/Anoyi

► 前言介绍

stack 是构成特定环境中的 service 集合, 它是自动部署多个相互关联的服务的简便方法,而无需单独定义每个服务。

stack file 是一种 yaml 格式的文件,类似于 docker-compose.yml 文件,它定义了一个或多个服务,并定义了服务的环境变量、部署标签、容器数量以及相关的环境特定配置等。

► Stack File 的编写

服务的各种配置已在之前的文章中介绍,只是在书写格式上有所变化,可以对应官方文档列举的 Demo 做参考:

https://docs.docker.com/compose/compose-file/

示例:使用 Stack 部署 Docker Swarm 入门:Service Network 管理 的应用

version: '3.4'
services:
  mongo:
    image: mongo
    restart: always
    networks: 
      - mongo_network
    deploy:
      restart_policy:
        condition: on-failure
      replicas: 2
  mongo-express: 
    image: mongo-express
    restart: always
    networks: 
      - mongo_network
    ports:
      - target: 8081
        published: 80
        protocol: tcp
        mode: ingress
    environment:
      ME_CONFIG_MONGODB_SERVER: mongo
      ME_CONFIG_MONGODB_PORT: 27017
    deploy:
      restart_policy:
        condition: on-failure
      replicas: 1
networks:
  mongo_network:
    external: true

► 部署 Stack

用法

docker stack deploy [OPTIONS] STACK

参数

简写 参数 默认值 描述
--bundle-file 实验阶段】分布式应用程序包文件的路径
-c --compose-file Stack File 路径
--prune 删除不再被引用的服务
--resolve-image always 查询 Registry 以解决​​镜像摘要和支持的平台(“always”、”changed”、”never”)
--with-registry-auth 向 Swarm 代理发送 Registry 认证详细信息

示例:将上述内容写到文件 stack.yml 中,然后部署

docker stack deploy -c stack anoyi_mongo

► Stack 列表

用法

docker stack ls

► Stack 服务列表

docker stack services [OPTIONS] STACK

► Stack 任务列表

用法

docker stack ps [OPTIONS] STACK

► Stack 删除

用法

docker stack rm STACK [STACK...]

示例:

docker stack rm anoyi_mongo

► 补充案例

Docker Swarm 下搭建 MongoDB 分片+副本+选举集群

推荐阅读更多精彩内容