在Swarm集群中管理配置数据(跟secret很像)

传统配置文件管理姿势是 放入镜像、设置环境变量、或者是volume动态挂载,会降低镜像的通用性,维护起来也麻烦,17.06版本后的docker支持统一 docker config子命令管理集群重的配置信息,无需将配置文件放入镜像或者挂载到容器中就可以实现对服务的配置。

PS:config 仅能在Swarm集群中使用(这个地方和secret不一样,secret可以在集群和compose中使用)。

下面以部署redis为例:

我先把本地集群环境还原下(三个machine构成的干净集群):

然后新建一个配置文件

然后这样关联下

docker config create redis.conf redis.conf

查看 docker config ls

然后直接创建单服务的集群

docker service create \

--name redis \

--config redis.conf \

-p 6379:6380 \

redis:latest \

redis-server /redis.conf

成功是成功了,但是有点尴尬,容器跑到别的节点上去了,我现在切到work节点上找到那个容器,然后登陆进去,看下实际情况。

上面的命令说明:

docker-machine ssh work1 切换到work1的这个节点机器上

如果不显示target指定路径,config的默认路径就是直接挂载到/config.conf上。所以我上面是cd过去了,cat看看对不对,内容没问题 是设置端口 6380,然后我下面又直接redis-cli尝试连接了一下redis-serve结果失败,这个是对的,因为咱们通过配置文件设置了6380,redis的默认端口是6379,上面也提示了,127.0.0.1:6379: Connection refused,下面我有指定了端口6380,连接成功,然后随便测试了下,没问题。

还有几个地方需要注意一下,默认在容器/config.conf的文件属性是只读的,还有虽然可以理解成是挂载了刚刚manager节点上的那个文件,但是修改源文件,这里的文件并不会被修改,同时我刚刚随便update一下端口映射,发现redis这个容器从work1节点上跑到manager节点上了,这到时没啥bug,就是提醒下,update之后容器可能会被切换到别的工作节点上。

还有就是说下怎么替换线上的正在跑的服务的config哈,刚刚自己铜鼓了半天,在本地直接创建一个redis2.conf文件,然后

docker config create redis2.conf redis2.conf

下一步是直接通过service update 功能删除原有的配置(不删除重新设置会提示已经存在,而且没有更新配置文件的功能(感觉应该有,但是我是失败了))

docker service update --config-rm redis.conf vtd27i1de4ex

删除之后再把redis2.conf配置文件换上去,记得换成redis.conf,因为我们之前设置的默认执行入口是直接加载/redis.con这个文件的

docker service update --config-add source=redis2.conf,target=redis.conf vtd27i1de4ex

这样就ok了,然后跳到容器上面,执行以下,测试结果是没问题。端口重新更改了。

如果是docker-compose.yml的话就是这么配置(注意是configs后面多了一个s)

redis.conf文件里 还是指定端口

执行:

docker stack deploy -c docker-compose.yml redis

上面是我自己写的,测试可以通过。

对了最后补充一下,刚刚我测试发现,就是上面我说如果想更改配置文件,需要先创建新的redis2.conf 然后移除容器上的redis.conf配置(不是上去删文件,是update),然后在增加redis2.conf为新的配置文件,名字改成redis.conf,这样有一个坏处就是没有保留原始的redis.conf,其实可以这样,创建redis2.conf之后,不是移除原来的配置,而是直接更改服务启动时的默认参数(记得加引号):这样也能达到效果,并且保留两个配置文件,刚刚我本地测试过了。

docker service update --args 'redis-server /redis2.conf' 13tv9ax07l4n

Docker Swarm集群config集中管理配置文件相关推荐

  1. docker swarm 集群服务编排部署指南(docker stack)

    Docker Swarm 集群管理 概述 Docker Swarm 是 Docker 的集群管理工具.它将 Docker 主机池转变为单个虚拟 Docker 主机,使得容器可以组成跨主机的子网网络.D ...

  2. 正式环境docker部署hyperf_应用部署 - Docker Swarm 集群搭建 - 《Hyperf v1.1.1 开发文档》 - 书栈网 · BookStack...

    Docker Swarm 集群搭建 现阶段,Docker容器技术已经相当成熟,就算是中小型公司也可以基于 Gitlab.Aliyun镜像服务.Docker Swarm 轻松搭建自己的 Docker集群 ...

  3. Docker Swarm集群与Kubernetes的搭建与试用

    一.Docker Swarm集群的环境搭建与试用 Docker Swarm 搭建 1. OS设置 [root@vm1 ~]# ip -br a | grep 0s8 | awk '{print $3} ...

  4. Jenkins持续集成结合Docker Swarm集群实现Web应用部署的发布

    案列环境: 准备5台虚拟机,其中3台用于部署Docker Swarm集群,1台部署代码版本控制系统,1台部署Jenkins持续集成工具. 192.168.80.10 swarm01 192.168.8 ...

  5. Docker Swarm集群部署

    Docker Swarm集群部署 1 方案介绍 1.1 概述 1.2 软件包 2 Swarm集群搭建 2.1 IP规划 2.2 基础配置 2.2.1 关闭SELinux 2.2.2 关闭防火墙或开放需 ...

  6. Docker Swarm集群仓库和可视化管理

    Docker Swarm集群仓库和可视化管理 1 背景 2 环境 3 安装操作 3.1 registary部署 3.1.1 下载 3.1.2 部署 3.2 portainer部署 3.2.1 下载 3 ...

  7. docker swarm集群搭建及使用Portainer、shipyard

    一.规划 1.swarm01作为manager节点,swarm02和swarm03作为worker节点. # cat /etc/hosts 127.0.0.1 localhost 192.168.13 ...

  8. docker swarm集群及其UI部署

    一.规划 ①swarm01作为manager节点,swarm02和swarm03作为worker节点. 1 2 3 4 5 # cat /etc/hosts 127.0.0.1   localhost ...

  9. 持续集成docker—第三篇(docker swarm集群搭建)

    一.规划 1.net-master作为manager节点,net-salve作为worker节点. cat >>/etc/hosts<<EOF 47.96.65.70 yund ...

最新文章

  1. Redis 集群部署及踩过的坑
  2. 盘点:近两年人工智能和机器学习领域部分收购案
  3. MATLAB APPbase,使用HTTPD做内部访问转向
  4. sql where中用case_从零学会SQL:求职面试题(汇总)
  5. RabbitMQ—流控机制
  6. SoftGrid教程系列
  7. Smarty3的性能问题
  8. github进不去_app.gitbook.com进不去,一直卡着怎么回事
  9. HTML方式显示邮件无法打开,HTML格式的电子邮件不能正确显示
  10. 2021-1016-复盘 强势股-风口综合实战
  11. 大疆2018网申之机器学习算法工程师笔试题B卷
  12. SQL省市区三级表 脚本
  13. 2018-2019-2 20189215 《网络攻防技术》第二周作业
  14. 包包各部位名称图解_手袋各部位名称
  15. DTI-ATS入门(1):DTI综述
  16. 微信小程序(五)--- Vant组件库,API Promise化,MboX全局数据共享,分包相关
  17. Eclipse中mvn install 报错error in opening zip file
  18. 数据结构(四):二叉树
  19. Pascal's Triangle帕斯卡三角形算法
  20. druid password 加密原生使用

热门文章

  1. 直播系统搭建关键步骤与要点!
  2. python数据挖掘Hello World
  3. nginx负载均衡的session共享问题的解决方法
  4. android 下的网络图片加载
  5. Keras Theano 输出中间层结果
  6. git的团队协作开发
  7. 公钥和私钥的简单通俗说明
  8. 《构建之法》8.9.10
  9. for语句之打印三角形问题
  10. quick cocos2dx 3.x 配置win32工程