【问题标题】:Passing environment variables not working with Docker传递环境变量不适用于 Docker
【发布时间】:2018-10-15 07:14:26
【问题描述】:

我正在学习如何将环境变量传递给 Docker 容器。虽然以下工作正常,


Dockerfile

FROM ubuntu
ENV USERNAME='david'
CMD echo "username = $USERNAME"

构建和运行命令

docker build . -t enviro
docker run -d enviro

docker ps -a 给出

2a3a69aa7868        enviro              "/bin/sh -c 'echo \"u…"

docker logs 2a3a69aa7868给了

username = david

以下不起作用


Dockerfile

FROM ubuntu
CMD echo "username = $USERNAME"

构建和运行命令

docker build . -t enviro
docker run -d enviro -e USERNAME='david'

这里的运行命令给出了这个,

docker: Error response from daemon: OCI runtime create failed: 
  container_linux.go:348: starting container process caused "exec: \"-e\": 
  executable file not found in $PATH": unknown.

虽然 docker ps -a 给出了

249cb045c26a        enviro              "-e USERNAME=david"

docker logs 249cb045c26a 什么也没提供


任何想法,这里发生了什么?为什么没有传递环境变量?

【问题讨论】:

    标签: linux docker


    【解决方案1】:

    好的,我明白了。而不是下面的,

    docker run -d enviro -e USERNAME='david'
    

    应该是这样的

    docker run -d -e USERNAME='david' enviro 
    

    不知道,为什么 docker 需要在映像名称之前添加环境变量。

    【讨论】:

    • 图像名称应该在最后 :) 在此之前您可以使用所有选项参数
    • 这是因为图像名称之后的所有内容都作为参数发送到入口点脚本。默认情况下是 /bin/sh -c
    • 这正是我想要的!太感谢了。之前没有找到我的变量,但问题是它们实际上作为参数出现在我的脚本中。
    • 你刚刚为我节省了 小时“为什么这不起作用”
    • 谢谢!经过数小时的“为什么这不起作用”,我终于找到了这个答案:D
    猜你喜欢
    • 2018-09-18
    • 2018-12-02
    • 2020-11-07
    • 2017-01-22
    • 1970-01-01
    • 1970-01-01
    • 2014-12-18
    • 2019-06-02
    • 2018-03-24
    相关资源
    最近更新 更多