Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在容器中加载Docker环境变量_Docker_Environment Variables_Systemd - Fatal编程技术网

如何在容器中加载Docker环境变量

如何在容器中加载Docker环境变量,docker,environment-variables,systemd,Docker,Environment Variables,Systemd,我正在用systemd构建一个基于ubuntu映像的映像。我需要开始了 TigerVNC是一种服务,它依赖于我在 Dockerfile,类似于密码 FROM ubuntu-systemd ENV VNC_PW="some-password" ENTRYPOINT ["/lib/systemd/systemd"] 此服务的单位文件有一行: ExecStart=/usr/sbin/runuser -l root -c "/some/script.sh" 因为systemd有自己的环境,所以

我正在用systemd构建一个基于ubuntu映像的映像。我需要开始了 TigerVNC是一种服务,它依赖于我在 Dockerfile,类似于密码

FROM ubuntu-systemd

ENV VNC_PW="some-password"

ENTRYPOINT ["/lib/systemd/systemd"]
此服务的单位文件有一行:

ExecStart=/usr/sbin/runuser -l root -c "/some/script.sh" 
因为systemd有自己的环境,所以我无法访问环境变量 在我的Dockerfile中定义。我希望以root用户身份运行脚本 一个带有'-l'标志的登录shell可以让我访问这些变量,但它不能。 我知道我需要的变量在/proc/1/environ中,但我不知道如何加载它们 在根目录的.profile文件中添加内容的示例


谢谢。

有点棘手,但我可以通过包含以下行在ExecStart属性的/some/script.sh中加载环境变量:

export `xargs --null --max-args=1 echo < /proc/1/environ`

为什么不直接在单元文件或/etc/systemd/system/.service.d/overridefile.conf中的覆盖下拉列表中设置环境?在Service=>Environment=VNC_PW=somepassword部分中,因为我希望在运行控制台时覆盖密码:docker容器运行-e VNC_PW=另一个_密码。非常感谢,不管怎样,谢谢你的点击。那么就不要使用systemd,这在docker容器中有点尴尬。除非您有非常特殊的理由这样做,否则每个容器都应该包含一个使用其命令启动的服务。现在您的命令变成/some/script.sh,它将毫无问题地读取您的环境变量。再次感谢@Zeitounator。这个容器是用于测试的,我需要运行gnome桌面,虽然我已经尝试了几个星期,但是如果没有systemd,我无法这样做。我听说过systemd的替代品[但我更愿意继续使用systemd]。