一、前言
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
訪問測試:
可以看到配置文件是可以被容器應用的。