Docker - 与引用的卷容器共享环境变量

Docker - Share environment variables with referenced volume containers

是否可以让 Docker 在运行时共享与 --volumes-from 链接的容器的环境变量,就像与 --link 链接的容器一样?

我在我的应用程序中使用纯数据容器存储持久数据,我想检查我的应用程序容器的入口点脚本是否在运行时引用了数据容器,如果存在则取消 none.
我的想法是检查是否设置了数据容器的环境变量(包含暴露卷的路径),我还计划在脚本中的某些点使用它的值(例如设置我的应用程序的数据目录在它的配置文件)。

有什么方法可以实现这个目标吗?如果没有,下一个最好的方法是什么?


我发现 docker inspect returns 所有 volumes-from 个容器都在 HostConfig.VolumesFrom 下。这并没有完全解决共享问题,因为我想检查一个固定值(环境变量的名称)而不是容器名称并且还需要变量的值,但这是一个开始。

Is there any way to achieve this and if not what would be the next best way to do the things I described?

您不能使用 --volumes-from.

将环境变量从一个容器公开到另一个容器

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

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

如果您关心数据量是否以某种方式 "initialized",您可以检查 DATA_PATH 位置以获取某种特定标志文件 (if ! [ -f "$DATA_PATH/flagfile" ]; then ...)。