linux - 将配置文件共享到多个 docker 容器

标签 linux docker

假设我的 Docker 主机上有以下配置文件,我希望多个 Docker 容器能够访问该文件。

/opt/shared/config_file.yml

在典型的非 Docker 环境中,我可以使用符号链接(symbolic link),例如:

/opt/app1/config_file.yml -> /opt/shared/config_file.yml
/opt/app2/config_file.yml -> /opt/shared/config_file.yml

现在假设 app1 和 app2 已 dockerized。我希望能够在一个地方更新 config_file.yml 并让所有消费者(docker 容器)接受此更改,而无需重建容器。

我知道符号链接(symbolic link)不能用于访问主机上位于 docker 容器之外的文件。

首先想到的两个选项是:

  1. 设置从 docker 主机到 docker 容器的 NFS 共享
  2. 将配置文件放在共享的 Docker 卷中,并使用 docker-compose 将 app1 和 app2 连接到共享配置 docker

我正在尝试确定其他选项,然后最终决定最佳行动方案。

最佳答案

主机挂载的卷呢?如果每个应用程序只读取配置并且要求它位于容器内的不同位置,您可以执行以下操作:

docker run --name app1 --volume /opt/shared/config_file.yml:/opt/app1/config_file.yml:ro app1image
docker run --name app2 --volume /opt/shared/config_file.yml:/opt/app2/config_file.yml:ro app2image

主机上的文件可以安装在每个容器的单独位置。在 Docker 1.9 中,您实际上可以使用来自特定插件的任意卷来保存数据(例如 Flocker )。但是,这两种解决方案仍然是针对每个主机的,数据不能同时在多个主机上使用。

关于linux - 将配置文件共享到多个 docker 容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34109974/

相关文章:

python - 执行任务并在任务完成后关闭的 Shell 脚本

linux - Linux 进程间共享类对象

docker - Docker构建错误

docker - 我无法启动 minikube

linux - 信号、异常、硬件中断、陷阱

linux - Linux中每个进程的最大线程数?

c - Linux:用负 pid 杀死

docker - ApostropheCMS Docker镜像问题

docker compose Logstash - 指定配置文件并安装插件?

docker - Gitlab CI 中使用 Docker 运行器的代理问题