一、前言
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
訪問測試:

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