我正在尝试编写一个用于设置用户的小文件夹文件,并将当前用户作为一个小例子来向我自己证明它正在工作.我尝试了很多变种,在文档中找不到太多帮助.
FROM ubuntu
USER daemon
# ENTRYPOINT ["echo", "$USER"]
# just gives "$USER"
# ENTRYPOINT ["echo", "-e", "${USER}"]
# just gives "$USER"
# ENTRYPOINT echo $USER
# gives empty string
# ENTRYPOINT ["/bin/echo", "$USER"]
# just gives "$USER"
Run Code Online (Sandbox Code Playgroud)
我正在运行docker build .dockerfile,然后运行docker run <image-id>并获得结果
我期望预期的结果是daemon,或没有USER daemon线root.可能是一个非常简单的答案.
jpe*_*zzo 13
这是预期的行为,看起来很奇怪!
如果ENTRYPOINT是列表(如ENTRYPOINT ["echo", "$USER"]),则按原样使用,无需进一步解析或解释.所以$USER仍然存在$USER,因为在进程中没有涉及用USER环境变量的值替换它的shell .
现在,when ENTRYPOINT是一个字符串(如ENTRYPOINT echo $USER),实际执行的是sh -c "echo $USER",$USER并被环境变量的值替换(正如您所期望的那样).
但是,USER默认情况下不设置环境变量.它由登录过程设置; 当你刚刚运行sh -c ...登录过程时,不涉及.
比较运行时的环境docker run -t -i ubuntu bash和docker run -t -i ubuntu login -f root.在前一种情况下,您将获得一个非常基本的环境; 在后一种情况下,您将获得您习惯的完整环境(包括USER变量).
| 归档时间: |
|
| 查看次数: |
13162 次 |
| 最近记录: |