传递不与Docker一起使用的环境变量

时间:2018-05-04 18:20:34

标签: linux docker

我正在学习如何将环境变量传递给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'

这里的run命令给出了这个,

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 不提供任何内容

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

1 个答案:

答案 0 :(得分:5)

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

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

一定是这样的

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

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