
管理配置信息
启动镜像的时候指定配置文件,增加镜像的通用性。
在 Swarm 集群中管理配置数据
在动态的、大规模的分布式集群上,管理和分发配置文件也是很重要的工作。传统的配置文件分发方式(如配置文件放入镜像中,设置环境变量,volume 动态挂载等)都降低了镜像的通用性。
在 Docker 17.06 以上版本中,Docker 新增了 docker config 子命令来管理集群中的配置信息,以后你无需将配置文件放入镜像或挂载到容器中就可实现对服务的配置。
注意:config 仅能在 Swarm 集群中使用。
演示两个实例
一、在 Swarm 集群中部署 redis 服务
创建 config
新建 redis.conf 文件
port 6380
此项配置 Redis 监听 6380 端口
我们使用 docker config create
命令创建 config
$ docker config create redis.conf redis.conf
查看 config
使用 docker config ls
命令来查看 config
$ docker config lsID NAME CREATED UPDATEDyod8fx8iiqtoo84jgwadp86yk redis.conf 4 seconds ago 4 seconds ago
创建 redis 服务
$ docker service create \--name redis \# --config source=redis.conf,target=/etc/redis.conf \--config redis.conf \-p 6379:6380 \redis:latest \redis-server redis.conf
如果你没有在 target 中显式的指定路径时,默认的 redis.conf 以 tmpfs 文件系统挂载到容器的 config.conf。
经过测试,redis 可以正常使用。
以前我们通过监听主机目录来配置 Redis,就需要在集群的每个节点放置该文件,如果采用 docker config 来管理服务的配置信息,我们只需在集群中的管理节点创建 config,当部署服务时,集群会自动的将配置文件分发到运行服务的各个节点中,大大降低了配置信息的管理和分发难度。
二、在 Swarm 集群中部署 Nginx 服务
1、管理节点:宿主级当前目录创建Nginx配置文件
vi site.conf
server {listen 80;server_name localhost;location {root usr/share/nginx/html;index index.html index.htm;}}
2、管理节点:将site.conf保存到docker配置存储中
docker config create docker
配置文件名 本地配置文件
root@manager1:~# docker config create site.conf site.confqv99ymlskm3zps0krruitvh1lroot@manager1:~# docker config lsID NAME CREATED UPDATEDqv99ymlskm3zps0krruitvh1l site.conf 6 seconds ago 6 seconds agoroot@manager1:~# docker config inspect site.conf[{"ID": "qv99ymlskm3zps0krruitvh1l","Version": {"Index": 3359},"CreatedAt": "2020-01-24T02:50:00.039431899Z","UpdatedAt": "2020-01-24T02:50:00.039431899Z","Spec": {"Name": "site.conf","Labels": {},"Data": "c2VydmVyIHsKbGlzdGVuIDgwOwpzZXJ2ZXJfbmFtZSBsb2NhbGhvc3Q7CmxvY2F0aW9uIC8gewpyb290IC91c3Ivc2hhcmUvbmdpbngvaHRtbDsKaW5kZXggaW5kZXguaHRtbCBpbmRleC5odG07Cn0KfQo="}}]
3、管理节点:创建一个Nginx并应用这个配置
docker service create \--name test_nginx \--replicas 2 \--config source=site.conf,target=/etc/nginx/conf.d/site.conf \--publish 8080:80 \nginx:latest
创建服务docker service create \# 服务名--name nginx \#添加配置文件,source=docker配置文件,target=配置文件路径--config source=site.conf,target=/etc/nginx/conf.d/site.conf \# 暴露端口--publish 8080:80 \# 使用镜像nginx:latest
4、工作节点:切换到容器查看配置文件
root@manager1:~# docker service lsID NAME MODE REPLICAS IMAGE PORTSpp264mpv82x8 test_nginx replicated 2/2 nginx:latest *:8080->80/tcproot@manager1:~# docker service ps test_nginxID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS0l9e32rwx9n2 test_nginx.1 nginx:latest worker1 Running Running 27 seconds agoidg9t7rrrige test_nginx.2 nginx:latest manager1 Running Running 27 seconds agoroot@manager1:~# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESbc3de40aa4ee nginx:latest "nginx -g 'daemon of…" 45 seconds ago Up 44 seconds 80/tcp test_nginx.2.idg9t7rrrigej7gc2m0m8wblfroot@manager1:~# docker exec -it bc3de40aa4ee bashroot@bc3de40aa4ee:/# cd /etc/nginx/conf.d/root@bc3de40aa4ee:/etc/nginx/conf.d# lsdefault.conf site.confroot@bc3de40aa4ee:/etc/nginx/conf.d# cat site.confserver {listen 80;server_name localhost;location / {root /usr/share/nginx/html;index index.html index.htm;}}root@bc3de40aa4ee:/etc/nginx/conf.d# service nginx status[ ok ] nginx is running.
5.在浏览器中访问
在docker-machine 中通过访问虚拟机的IP地址来访问

最后修改时间:2020-01-25 11:33:51
文章转载自运维笔记本,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




