docker_practice/swarm_mode/config.md
2017-12-08 19:15:27 +08:00

53 lines
1.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## 在 Swarm 集群中管理配置数据
在动态的、大规模的分布式集群上管理和分发配置文件也是很重要的工作。传统的配置文件分发方式如配置文件放入镜像中设置环境变量volume 动态挂载等)都降低了镜像的通用性。
在 Docker 17.06 以上版本中Docker 新增了 `docker config` 子命令来管理集群中的配置信息,以后你无需将配置文件放入镜像或挂载到容器中就可实现对服务的配置。
>注意:`docker config` 仅能在 Swarm 集群中使用。
这里我们以在 Swarm 集群中部署 `redis` 服务为例。
### 创建 config
新建 `redis.conf` 文件
```bash
port 6380
```
此项配置 Redis 监听 `6380` 端口
我们使用 `docker config create` 命令创建 `config`
```bash
$ docker config create redis.conf redis.conf
```
### 查看 config
使用 `docker config ls` 命令来查看 `secret`
```bash
ID NAME CREATED UPDATED
yod8fx8iiqtoo84jgwadp86yk redis.conf 4 seconds ago 4 seconds ago
```
### 创建 redis 服务
```bash
$ 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`,当部署服务时,集群会自动的将配置文件分发到运行服务的各个节点中,大大降低了配置信息的管理和分发难度。