作为一个实验,我以两种方式在我的 Docker 容器中设置环境变量:使用该-e
选项,以及使用environment
安装/etc/environment
在容器内的文件。该文件有一行:
FROM_ENV_FILE=true
我的docker run
命令:
docker run -de FROM_CMD_LINE=true -v $(pwd)/environment:/etc/environment ubuntu:14.04 sleep infinity
当我运行时,docker exec b20543b507e3 cat /etc/environment
我确实看到该文件已正确安装并包含我的值,但是我只FROM_CMD_LINE
在运行时看到 set printenv
,所以我的 /etc/environment 文件似乎被忽略了。
我的问题不仅仅是为什么 /etc/environment 在我的 ubuntu:14.04 docker 映像中不起作用?. 我正在寻找一个答案来解释 Docker 为设置进程环境所做的工作,以使通过传递-e
给容器中所有正在运行的进程的自定义环境变量可用,所以我希望能理解为什么/etc/environment
在容器中被忽略.
我正在使用的相关运行时详细信息粘贴在下面。
docker version
Client:
Version: 18.03.1-ce
API version: 1.37
Go version: go1.9.5
Git commit: 9ee9f40
Built: Thu Apr 26 07:13:02 2018
OS/Arch: darwin/amd64
Experimental: false
Orchestrator: swarm
Server:
Engine:
Version: 18.03.1-ce
API version: 1.37 (minimum version 1.12)
Go version: go1.9.5
Git commit: 9ee9f40
Built: Thu Apr 26 07:22:38 2018
OS/Arch: linux/amd64
Experimental: true
查看 18.03.1-ce的发行说明:
Containerd:更新到 1.0.3 版本moby/moby#36749
我正在挖掘containerd
源代码,但我希望已经熟悉容器运行时的人可以帮助我。