• Docker Swarm(五)Config 配置管理


    前言

    在动态的、大规模的分布式集群上,管理和分发配置文件也是很重要的工作。传统的配置文件分发方式(如配置文件放入镜像中,设置环境变量,volume 动态挂载等)都降低了镜像的通用性。

    Docker 17.06 引入了 Swarm 服务配置,它允许你在服务的镜像或者运行的容器外部存储非敏感信息,比如配置文件。这样保证了镜像的通用性,而无需将配置文件绑定到容器或使用环境变量来配置。

    • Configs 是安装在容器的文件系统中,而不是使用 RAM 磁盘。
    • Configs 可以随时添加或删除,服务可以共享一个配置。
    • Configs 可以与 Environments 或 Labels 结合使用,以获得最大的灵活性。
    適合的應用場景有:
    • nginx或tomcat或redis等配置文件設定
    • 設定或更改資料庫config等 這樣可以取代bind mount(將資料儲存在硬碟),存在Raft能提高可用性 swarm config跟secret有異曲同工之妙,可以透過指令來新增刪除config files
    • config配置是不可变的,所以无法更改现有服务的文件,可以创建一个新的 Config 来使用不同的文件
    • 若有任何service使用到該config,要先移除service才能移除config
    • 如果是隱私資料一樣用secret來存

    提醒:Docker Configs 仅对 Swarm 服务有效,对独立的容器是无用的。如需使用,可以启动 1 个副本的服务来使用 Docker Config。

     
     

    Config 基本操作

    友情提示:“ 需 Swarm Manager 权限才能操作 ”

    • 创建配置
    docker config create tomcat-server ./server.xml
    • 配置列表
    docker config ls

    • 配置详情
    docker config inspect nginx-conf

    • 配置删除
    docker config rm nginx-conf

    config 使用

    • 使用

      用特定 server.xml 來建立一個service

    docker service create --name masl -e TZ="Asia/Shanghai" --config source=tomcat-server,target=/usr/local/apache-tomcat-8.5.50/conf/server.xml --replicas 2 -p 8080:8080 172.16.99.2:40305/masl:dev-yc-36
    • 更新

       新增新的config來取代舊的,並更新有用到該config的service

    docker config create tomcat-server-2 ./server.xml
    docker service update --config-rm tomcat-server --config source=tomcat-server-2,target=/usr/local/apache-tomcat-8.5.50/conf/server.xml
    • stack file使用
    version: 3.3
    services:
      web:
        image: 172.16.99.2:40305/masl:dev-yc-36
        configs:
          - source: tomcat-server
          - target: /usr/local/apache-tomcat-8.5.50/conf/server.xml
     
    configs:
      tomcat-server:
        file: ./server.xml

    注:3.3之後才支持config

    Swarm 对 Config 的管理

    在 Swarm 中添加一个 Config 时,Docker 通过 TLS 连接把 Config 发送给 Swarm Manager。这个 Config 经过加密后,存储在 Raft 日志中,而且整个 Raft 日志会被复制到其他 Manager 中,确保 Config 的高可用性。

    在新创建的或正在运行的服务添加 Config 时,Config 将作为文件安装到容器中,文件路径默认为 linux 容器中的 /<config-name>

    可以在任何时候通过更新服务的方式授权其他的 Config 或移除已有的Config 访问权。

    如果节点是 Swarm Manager,或者正在运行服务任务已被授权访问这个 Config,那么这个节点才能访问这个配置。当容器任务停止运行时,共享给它的 Config 将从该容器的内存文件系统中卸载,并从节点的内存刷新。

    如果一个节点运行了一个带 Config 的任务容器,在它失去与 Swarm 的连接后,这个任务容器仍然可以访问其 Config,但只有在节点重新连接到 Swarm 时才能接收更新。

    正在运行的服务正在使用的 Config 不能删除。想要在不中断正在运行的服务的情况下删除配置可以参考 《Rotate a config》

    为了更容易地更新或回退 Config,可以考虑在 Config Name 中添加版本号或日期。

    如需更新 Stack ,可以更改 Compose file,然后重新运行 docker stack deploy -c <new-compose-file> <stack-name>。如果 Compose file 使用新的 Config ,那么 services 将开始使用这些配置。

     

    参考:https://www.jianshu.com/p/1e6828fd8947
  • 相关阅读:
    JDBC
    SQL语法(3)
    数据库设计和三大范式
    SQL语法(2)
    SQL语法(1)
    数据库的概念以及MYSQL的安装和卸载
    IO流(下)
    IO流(上)
    bash: javac: command not found...
    R语言绘制地图
  • 原文地址:https://www.cnblogs.com/caoweixiong/p/12382076.html
Copyright © 2020-2023  润新知