Swarm配置文件管理

一、前言

  Docker 17.06引入了swarm服务配置,允许您在服务映像外部或运行容器中存储非敏感信息,例如配置文件。 这允许您保持镜像尽可能通用,而无需将配置文件绑定到容器或使用环境变量。在Swarm  Service中可以随时添加或删除配置,并且service可以共享配置。甚至可以将配置与环境变量或标签结合使用,以获得最大的灵活性。 配置值可以是通用字符串或二进制内容(最大可达500 kb)。

  注意:Docker配置仅适用于群集服务,而不适用于独立容器。

二、Docker config

  2.1 查看命令 

[root@manager ~]# clear
[root@manager ~]# docker config --help

Usage:	docker config COMMAND

Manage Docker configs

Options:


Commands:
  create      Create a config from a file or STDIN
  inspect     Display detailed information on one or more configs
  ls          List configs
  rm          Remove one or more configs

  2.1 创建配置文件  

# 创建一个nginx的简单配置文件
 
# 先要有一个配置文件存在
[root@manager ~]# cd /data/conf/
[root@manager conf]# ls
test-nginx.conf
 
# 内容
[root@manager conf]# cat test-nginx.conf
server {
    listen  81;
    server_name  localhost;
    location / {
            root /usr/share/nginx/html;
            index index.html index.htm;
    }
}
 
# 创建docker swarm 配置
[root@manager conf]# docker config create test.conf test-nginx.conf
3ttdaggwatpjict89yav6kr6x
 
test.conf : docker config 配置文件
 

# 查看config 配置文件
[root@manager conf]# docker config ls
ID                          NAME                CREATED             UPDATED
3ttdaggwatpjict89yav6kr6x   test.conf           2 hours ago         2 hours ago


# 查看详细配置
[root@manager conf]# docker config inspect test.conf
[
    {
        "ID": "3ttdaggwatpjict89yav6kr6x",
        "Version": {
            "Index": 21278
        },
        "CreatedAt": "2018-04-13T03:34:46.900656812Z",
        "UpdatedAt": "2018-04-13T03:34:46.900656812Z",
        "Spec": {
            "Name": "test.conf",
            "Labels": {},
            "Data": "c2VydmVyIHsKICAgIGxpc3RlbiAgODE7CiAgICBzZXJ2ZXJfbmFtZSAgbG9jYWxob3N0OwogICAgbG9jYXRpb24gLyB7CiAgICAgICAgICAgIHJvb3QgL3Vzci9zaGFyZS9uZ2lueC9odG1sOwogICAgICAgICAgICBpbmRleCBpbmRleC5odG1sIGluZGV4Lmh0bTsKCX0KfQo="
        }
    }
]

  2.3 创建service 

# 现在只有一个副本来测试
[root@manager conf]# docker service create 
--name my-web 
--config src=test.conf,target=/etc/nginx/conf.d/test.conf 
--publish 8081:81 
nginx

参数:
--name : 服务名称
--config : 添加配置
--publish :暴露端口


# 查看在哪个节点
[root@manager ~]# docker service ps my-web
ID                  NAME                IMAGE               NODE                DESIRED STATE       CURRENT STATE         ERROR               PORTS
jh03twrijdbh        my-web.1            nginx:latest        node-01             Running             Running 2 hours ago 

# 在node-01做修改
在该nginx容器中默认web访问路径中增加一个页面
echo "Hello Docker.From Swarm Config." > /usr/share/nginx/html/index2.html

  访问测试:

  

  可以看到配置文件是可以被容器应用的。

原文地址:https://www.cnblogs.com/bigberg/p/8819152.html