在 Swarm 集群中管理配置数据

从 Docker 17.06 开始 ,Docker 新增了 docker config 子命令来管理集群中的配置信息,以后你无需将配置文件放入镜像或挂载到容器中就可实现对服务的配置。

注意:config 仅能在 Swarm 集群中使用。和secret不一样,secret可以在集群和compose中使用

这里我们以在 Swarm 集群中部署 redis 服务为例。

创建 config

新建 redis.conf 文件

echo port 6380 > redis.conf

此项配置 Redis 监听 6380 端口

我们使用 docker config create 命令创建 config

$ docker config create redis.conf redis.conf

查看 config

使用 docker config ls 命令来查看 config

$ docker config ls

ID                          NAME                CREATED             UPDATED
w3871t24balw9qrrnytleye2c   redis.conf          10 seconds ago      10 seconds ago

创建 redis 服务

$ docker service create \
     --name redis \
     --config redis.conf \
     -p 6379:6380 \
     redis:latest \
     redis-server /redis.conf

如果你没有在 target 中指定路径,默认的 redis.conftmpfs 文件系统挂载到容器的 /config.conf

验证redis

查看redis 部署在哪个节点

[root@node1 ~]# docker service ls
ID                  NAME                MODE                REPLICAS            IMAGE               PORTS
oza6gq8niqyd        redis               replicated          1/1                 redis:latest        *:6379->6380/tcp
[root@node1 ~]# docker service ps oza6gq8niqyd  
ID                  NAME                IMAGE               NODE                DESIRED STATE       CURRENT STATE            ERROR               PORTS
qed5nf0pelgk        redis.1             redis:latest        node2               Running             Running 38 seconds ago

登录容器连接redis

[root@node2 network-scripts]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
5054a265a3fe        redis:latest        "docker-entrypoint.s…"   56 seconds ago      Up 54 seconds       6379/tcp            redis.1.qed5nf0pelgknpmcg1dfbyj8r
[root@node2 network-scripts]# docker exec -it 5054 /bin/sh
# redis-cli -p 6380
127.0.0.1:6380> set k v
OK
127.0.0.1:6380> get k
"v"
127.0.0.1:6380>

以前我们通过挂载主机目录来配置 Redis,就需要在集群的每个节点放置该文件,如果采用 docker config 来管理服务的配置信息,我们只需在集群中的管理节点创建 config,当部署服务时,集群会自动的将配置文件分发到运行服务的各个节点中,大大降低了配置信息的管理和分发难度。

官方文档

results matching ""

    No results matching ""