Dockerfile内置的环境variables文档

我遇到了一些有用的信息,这些信息提示我有一个可以在Dockerfile中使用的内置环境variables$HOSTNAME 。 在相当数量的search中,我无法find这样的内置variables的全面列表。 Dockerfile参考解释了如何使用ENV命令来修改环境variables,但我现在不需要这个。 我只是想知道什么是可用的默认情况下。 有没有这方面的官方文件? 我认为应该有,并做一些searchHOSTNAME会指向我,但没有骰子。

我只是想知道什么是可用的默认情况下。

这取决于每个图像。 你可以看到在每一个variables中定义了哪些variables:

 docker run <image> env 

要么:

 docker inspect <image> -f '{{.Config.Env}}' 

例如:

 $ docker run ubuntu env PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin HOSTNAME=71fc7d5db1f2 no_proxy=*.local, 169.254/16 HOME=/root $ docker inspect ubuntu -f '{{.Config.Env}}' [PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin] 

要么:

 $ docker run node env PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin HOSTNAME=42bbb311714a no_proxy=*.local, 169.254/16 NPM_CONFIG_LOGLEVEL=info NODE_VERSION=7.10.0 YARN_VERSION=0.24.4 HOME=/root $ docker inspect node -f '{{.Config.Env}}' [PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin NPM_CONFIG_LOGLEVEL=info NODE_VERSION=7.10.0 YARN_VERSION=0.24.4] 

PS:你可以做同样的运行容器:

 docker inspect <container-id> -f '{{.Config.Env}}' docker exec <container-id> env 

我猜大部分发生在https://github.com/moby/moby/blob/34536c498d56a0c74fab08bd434407ac4707c971/container/container_unix.go#L57-L72 。 我不会说$HOSTNAME是一个特定于Docker的东西。 在大多数Linux发行版中,很多脚本/ shell使用它。 由于Docker没有运行一个完整的初始化系统,它会在启动时设置主机名variables(例如Ubuntu上的/etc/init.d/hostname.sh),因此确保它为您设置。

看起来他们也设置了默认的$PATH$TERM如果你指定一个tty( -t )。 除了可以指定自己的环境variables之外,当使用--link链接另一个容器(现在已弃用的function)时,还可以获得一堆可用的环境variables。 请参阅https://docs.docker.com/engine/userguide/networking/default_network/dockerlinks/#environment-variables