首页 > 其他 > 详细

docker stack /swarm 替代 docker-compose 进行部署

时间:2019-09-28 21:58:15      阅读:150      评论:0      收藏:0      [点我收藏+]

之前一直用docker-compose开发了几个单例的service, 今天开始压力测试, 结果发现postgres的CPU负载很重, 就想设置cpus 结果发现docker-compose V3之后 只能写在deploy字段里, 但是docker-compose up  却不支持 deploy 

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

说只能用swarm 模式.  这等于说V3的 docker compose  不能直接设定这个?

现在把swarm启动搞定了. 大概明白docker的意思了:

编辑同一份docker-compose.yml, 但是compose 和 swarm/stack的分工是这样的:

 docker-compose   用于dev   支持build restart  但是不支持deploy,  

swarm/stack      用于 prod  支持 deply的各种设置,包括分配cpu和内存, 但是创建容器只支持从image,不支持build.

 

假设已经用docker-compose基本开发完毕. 那么准备工作是这样:

 

一 docker-compose.yml

swarm模式, 每个serive都必须有image,不能只有build.

最简单的方法,就是先docker-compose up --build 启动运行无误

然后docker image ls 查看创建出的镜像名字

抄到每个Service下面,

然后,别忘了增加deploy字段, 尤其是mode, 对单例, 设置为global

yml形如:

version: ‘3.7

services: gateway:
#nodejs + socket.io server image: lh2-runtime_gateway build: ./machines/lh2-gateway
...下略
    deploy:
      mode: global
 

 

一 配置swarm

在docker-compose.yml的路径下(就是原来运行docker-compose的路径)

docker swarm init

技术分享图片

具体细节略过了, 简单说,我们的manager和worker都是这同一台机器的话, 这一句就够了, 不用join别的了

二.  stack

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

使用 docker-compose.yml 创建 stack (也就是一堆service), 

技术分享图片

这样服务其实已经创建好了.

但发现其实服务并没有在线. 检查一下

技术分享图片

replicas 是服务copy的数量, 每个最大1一个,但是当前活动都是0,  全都没启动起来

继续查具体1个service, 用 id

技术分享图片

发现不断报错, ."Pool overlaps with other one …"

这是和networks有关,根据

https://blog.csdn.net/u010483897/article/details/88017387

要删除 docker-compose.yml 创建的networks 否则一会服务因为端口相同都rejected  

查看一下docker 的网络

技术分享图片


最后一个的scope 是swarm , driver 时 overlay的 是刚刚创建的,需要保留的

那么前面 bridge  local  那个,是需要删除的

技术分享图片

删除之后,再查看刚才那个服务, 已经提示启动成功, 没有错误了

技术分享图片

显示 数量都是 1/1  因为全是global

此时已经可以使用服务了.

docker stats 可以查看到服务全在运行,和用docker-compse up 时 一样

技术分享图片 

 

总结

基本无坑,比想象的容易. 吃完晚饭2个小时基本从完全不懂到部署成功了.  也不用太去管什么叫swarm ,什么 叫 stack ,先运行起来再说.

感觉还是部署和开发环境  完全分开在不同机器上比较好.  不然, 用 docker-compose build 的时候,还是要重新删除,创建一遍networks. 但是穷人没办法呀.  也将就了.

 

docker stack /swarm 替代 docker-compose 进行部署

原文:https://www.cnblogs.com/xuanmanstein/p/11605071.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!