假设我的Docker主机上有以下配置文件,并且我希望多个Docker容器能够访问此文件。
/opt/shared/config_file.yml
在典型的非Docker环境中,我可以使用符号链接,例如:
/opt/app1/config_file.yml -> /opt/shared/config_file.yml
/opt/app2/config_file.yml -> /opt/shared/config_file.yml
现在假设app1和app2已泊坞化。我希望能够在一个地方更新config_file.yml并让所有使用者(docker容器)获取此更改,而无需重建容器。
据我所知,符号链接不能用于访问Docker容器外部的主机上的文件。
首先想到的两个选项是:
我正在尝试确定其他选项,然后最终确定最佳行动方案。
答案 0 :(得分:1)
主机安装卷怎么样?如果每个应用程序只读取配置,并且要求它位于容器内的不同位置,则可以执行以下操作:
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)。但是,这两种解决方案仍然是每个主机,并且数据不能同时在多个主机上使用。