前言
单机模式下,我们可以使用 Docker Compose 来编排多个服务,而在上一篇文章中介绍的 Docker Swarm
只能实现对单个服务的简单部署。于是就引出了本文的主角 Docker Stack
,通过 Docker Stack
我们只需对已有的 docker-compose.yml
配置文件稍加改造就可以完成 Docker 集群环境下的多服务编排。
正文
首先创建一个 docker-compose.yml 文件,使用 Docker Compose v3 语法
内容比较简单,一个有四个实例的nginx服务,两个只部署在 manager 节点上的监控工具服务:portainer 和 visualizer
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
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦