Docker – 与引用的卷容器共享环境variables

是否有可能让Docker在运行时共享与--volumes-from链接的容器的环境variables,就像使用链接链接的容器--link

我在我的应用程序使用持久数据的数据专用容器,我想检查我的应用程序容器的入口点脚本是否在运行时引用数据容器,如果没有,则取消。
我的想法是检查数据容器的环境variables(包含暴露的卷的path)是否已经设置,我也计划在脚本中的某些点使用它的值(例如设置我的应用程序的数据目录其configuration文件)。

有没有办法做到这一点,如果不是什么将是下一个最好的方式来做我所描述的事情?


我发现HostConfig.VolumesFrom volumes-from HostConfig.VolumesFrom下的容器返回所有的volumes-from 。 这并不能完全解决共享问题,因为我想检查一个固定值(环境variables的名称),而不是一个容器名称,也需要variables的值,但这是一个开始。

有没有办法做到这一点,如果不是什么将是下一个最好的方式来做我所描述的事情?

您不能使用--volumes-from从一个容器向另一个容器公开环境variables。

您的应用程序不一定关心在运行时是否引用了数据容器。 您应该在Dockerfile中声明一个VOLUME ,以便(a)应用程序将使用由VOLUME指令产生的匿名卷来初始化一个新的数据存储,或者(b)使用使用萎缩呈现的卷--volumes-from docker run命令行中使用-v或使用-v

在启动应用程序容器( -e DATA_PATH=/path/to/my/data )时,可以简单地提供数据卷的位置作为环境variables。

如果您关心数据卷是否已经以某种方式“初始化”,您可以检查某个特定标志文件的DATA_PATH位置( if ! [ -f "$DATA_PATH/flagfile" ]; then ... )。