首页 > 解决方案 > 传递环境变量不适用于 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'

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

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什么也没给


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

标签: linuxdocker

解决方案


好,我知道了。而不是以下,

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

一定是这样的

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

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


推荐阅读