docker stack /swarm 替代 docker-compose 进行部署
之前一直用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
...下略
一 配置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 的网络
docker network ls
最后一个的scope 是swarm , driver 时 overlay的 是刚刚创建的,需要保留的
那么前面 bridge local 那个,是需要删除的
删除之后,再查看刚才那个服务, 已经提示启动成功, 没有错误了
显示 数量都是 1/1 因为全是global
此时已经可以使用服务了.
docker stats 可以查看到服务全在运行,和用docker-compse up 时 一样
总结
基本无坑,比想象的容易. 吃完晚饭2个小时基本从完全不懂到部署成功了. 也不用太去管什么叫swarm ,什么 叫 stack ,先运行起来再说.
感觉还是部署和开发环境 完全分开在不同机器上比较好. 不然, 用 docker-compose build 的时候,还是要重新删除,创建一遍networks. 但是穷人没办法呀. 也将就了.
切换会docker-compose 的时候 找不到networks https://stackoverflow.com/questions/53347951/docker-network-not-found
docker-compose up --force-recreate
然而, 用swarm 部署后的效果,感觉和docker-comppse 并没有什么区别...
docker stack /swarm 替代 docker-compose 进行部署的更多相关文章
- docker kubernetes Swarm容器编排k8s CICD部署
1docker版本 docker 17.09 https://docs.docker.com/ appledeAir:~ apple$ docker version Client: Docker En ...
- docker探索-swarm搭建docker集群(七)
前言 Swarm 在 Docker 1.12 版本之前属于一个独立的项目,在 Docker 1.12 版本发布之后,该项目合并到了 Docker 中,成为 Docker 的一个子命令,docker s ...
- Docker - 通过swarm 管理 docker service
创建一个 Docker service $ docker service create --replicas 1 --name myhelloworld alpine ping docker.com ...
- Dockerfile & Docker Swarm & Docker Stack & Docker Compose
Dockerfile 通俗地讲,它是为了指导单个镜像从无到有的构建过程.如果你镜像是从Docker registry上面拉下来的,那就用不到这个文件:如果你是自己的应用,想打包成镜像,那就需要这个文件 ...
- 【翻译】Docker Compose 与Docker Stack的不同
翻译原文 Docker引擎在1.12 版本集成了Docker Swarm, 带来了一些新工具. 现在可以无需安装 Docker Compose, 就可以利用docker-compose.yml 文件 ...
- 小白学Docker之Swarm
承接上篇文章:小白学Docker之Compose,自学网站来源于https://docs.docker.com/get-started 系列文章: 小白学Docker之基础篇 小白学Docker之Co ...
- DOCKER 学习笔记8 Docker Swarm 集群搭建
前言 在前面的文章中,已经介绍如何在本地通过Docker Machine 创建虚拟Docker 主机,以及也可以在本地Windows 创建虚拟主机,也是可以使用的.这一节,我们将继续学习 Docker ...
- Docker - 使用Swarm和compose部署服务(containers)
前言 在之前使用Docker的过程中,一直是用 Docker run 命令单独启动container后再加入Overlay网络的方式实现部署工作的. 这种方式看似直接,但是随着服务所包含的contai ...
- Docker Swarm Mode 学习笔记 (部署服务)
使用 docker service 命令来管理 Swarm 集群中的服务,该命令只能在管理节点上执行. 新建服务 docker service create --replicas 3 -p 80:80 ...
随机推荐
- spark的安装步骤
官网:http://spark.apache.org/downloads.html 安装:tar -zxvf spark-2.4.3-bin-hadoop2.7.tgz#配置环境变量(vim ~/.b ...
- spark教程(16)-Streaming 之 DStream 详解
DStream 其实是 RDD 的序列,它的语法与 RDD 类似,分为 transformation(转换) 和 output(输出) 两种操作: DStream 的转换操作分为 无状态转换 和 有状 ...
- Eclipse连接数据库报错Local variable passwd defined in an enclosing scope must be final or effectively final
其实原因很简单,就是翻译的结果 匿名内部类和局部内部类只能引用外部的fianl变量 把变量变成fianl就行了 第一次知道啊 记小本本.......
- CF516D Drazil and Morning Exercise
cf luogu 首先每个点到最远点的距离可以预处理出来,这个距离显然是这个点到树直径两端点的最大值.把那个距离记为\(d_i\),然后从小到大枚举\(d_i\),并强制它为最大的\(d_i\),那么 ...
- HTML的学习(注释)
<!--charset 编码字符集--> <!--UTF-8 万国码 gb2312 中国标准第2312条 中文,韩文....大部分的亚裔语言(繁体字不支持) GBK 在上面的基础之上 ...
- 安装grafna已经grafna对接zabbix
安装插件 grafana-cli plugins install alexanderzobnin-zabbix-app 重启grafna systemctl restart grafana-serve ...
- 【大数据】初识Hadoop
因为项目日志体量较大,每天有4-7T的日志量,传统的sqlserver已经不能满足,所以现在需要使用到大数据的相关工具进行记录和使用. 虽然公共项目提供了组件和解决方案,但是对于一些名词.概念还是有必 ...
- java_day04_数组
chap04目标:数组---------------------------------------------- 1.概述 数组是一组数据的集合,数组中的每个数据被称为元素.在java中,数组也是对 ...
- 第十章· Logstash深入-Logstash与Redis那点事
Logstash将日志写入Redis 为什么要使用Redis 在企业中,日志规模的量级远远超出我们的想象,这就是为什么会有一家公司日志易专门做日志收集,给大型金融公司收集日志,比如银行,因为你有可能看 ...
- 网络基础篇之NAT(原理)
一.NAT的产生 由于网络的飞速发展和网络应用的极速增多,致使IPv4可用地址空间逐渐枯竭.尽管IPv6可以在根本上解决地址枯竭问题,但IPv4发展到IPv6还需要一个过渡,而这便产生了NAT. 二. ...