假设我的 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 容器之外的文件。
首先想到的两个选项是:
- 设置从 docker 主机到 docker 容器的 NFS 共享
- 将配置文件放在共享的 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/