继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

使用 Docker Stack 部署多服务集群

九州编程
关注TA
已关注
手记 475
粉丝 42
获赞 203

前言


单机模式下,我们可以使用 Docker Compose 来编排多个服务,而在上一篇文章中介绍的 Docker Swarm 只能实现对单个服务的简单部署。于是就引出了本文的主角 Docker Stack ,通过 Docker Stack 我们只需对已有的 docker-compose.yml 配置文件稍加改造就可以完成 Docker 集群环境下的多服务编排。

正文


  • 首先创建一个 docker-compose.yml 文件,使用 Docker Compose v3 语法

    内容比较简单,一个有四个实例的nginx服务,两个只部署在 manager 节点上的监控工具服务:portainervisualizer

version: "3"services:
  nginx:
    image: nginx:alpine
    ports:
      - 80:80
    deploy:
      mode: replicated
      replicas: 4

  visualizer:
    image: dockersamples/visualizer
    ports:
      - "9001:8080"
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock"
    deploy:
      replicas: 1
      placement:
        constraints: [node.role == manager]

  portainer:
    image: portainer/portainer
    ports:
      - "9000:9000"
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock"
    deploy:
      replicas: 1
      placement:
        constraints: [node.role == manager]
  • 部署服务

docker stack deploy -c docker-compose.yml stack-demo
  • 部署成功之后查看详情

$ docker stack services stack-demo 
ID                  NAME                    MODE                REPLICAS            IMAGE                             PORTS4yb35ywqvo49        stack-demo_portainer    replicated          1/1                 portainer/portainer:latest        *:9000->9000/tcp
mzd2volqug28        stack-demo_nginx        replicated          4/4                 nginx:alpine                      *:80->80/tcp
r0zlzpp3wujg        stack-demo_visualizer   replicated          1/1                 dockersamples/visualizer:latest   *:9001->8080/tcp
  • 在浏览器中访问监控工具,对应端口如下:

portainer  —— ip:9000visualizer —— ip:9001

注意:如果有多个 manager 节点,portainer 和 visualizer 可能分别部署在两台机器上,所以ip可能会不一样。

  • 修改 docker-compose.yml 文件后重新部署即可完成对修改内容的更新

docker stack deploy -c docker-compose.yml stack-demo

相关命令


命令描述
docker stack deploy部署新的堆栈或更新现有堆栈
docker stack ls列出现有堆栈
docker stack ps列出堆栈中的任务
docker stack rm删除一个或多个堆栈
docker stack services列出堆栈中的服务



作者:anyesu
链接:https://www.jianshu.com/p/1db6f0150fdb


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP