Dockerfile内置环境变量文档

时间:2017-06-13 16:53:07

标签: docker environment-variables dockerfile

我遇到了一些有用的信息,这些信息使我了解到可以在Dockerfile中使用的内置环境变量$HOSTNAME这一事实。在相当多的搜索中,我无法找到这些内置变量的完整列表。 Dockerfile参考解释了如何使用ENV命令修改环境变量,但我现在不需要这样做。我只想知道默认情况下可用的内容。这有官方文件吗?我认为应该有,并且在HOSTNAME上进行一些搜索会指向我,但没有骰子。

2 个答案:

答案 0 :(得分:2)

  

我只想知道默认情况下可用的内容。

这取决于每个图像。您可以看到在每个变量中定义了哪些变量:

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

答案 1 :(得分:1)

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

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