共享一个configuration文件到多个docker集装箱

假设我在Docker主机上有下面的configuration文件,并且我想让多个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被docker化了。 我希望能够在一个地方更新config_file.yml,并让所有使用者(docker容器)在不需要重build容器的情况下接受这个更改。

我了解,符号链接不能用于访问主机上位于泊坞窗外的文件。

头两个选项,想到的是:

  1. 设置从docker主机到docker集装箱的NFS共享
  2. 将configuration文件放在共享的Docker卷中,然后使用docker-compose将app1和app2连接到共享configuration泊坞窗

我试图找出其他select,然后最终决定最佳的行动scheme。

主机安装卷怎么样? 如果每个应用程序只读取configuration,并且要求它位于容器内的不同位置,则可以执行如下操作:

 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 )。 但是,这两个解决scheme仍然是每个主机,并且数据不能同时在多个主机上使用。