传递环境变量不适用于Docker

问题描述:

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

I am learning how to pass environment variables to Docker containers. While the following works fine,

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…"

码头工人日志2a3a69aa7868 给出

username = david






以下操作无效


The following doesn't work

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日志249cb045c26a 什么也没给出

任何想法,这是怎么回事?为什么不传递环境变量?

Any idea, what is going on here? Why is the environment variable not being passed?

好,我明白了。

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

必须是这样

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

不知道为什么docker之前需要环境变量图片的名称。

No idea, why docker requires the environment variable before the image's name though.