从Dockerfile中未声明的docker容器中获取环境变量的最简单方法是什么?

例如,通过docker exec容器/bin/bash会话设置的环境变量?

我可以做docker exec容器env | grep ENV_VAR,但我更喜欢只返回值的东西。

我尝试过使用docker exec容器echo“$ENV_VAR”,但替换似乎发生在容器之外,所以我没有从容器中获得env var,而是从我自己的计算机中获得env var。

谢谢。


当前回答

我们使用的第一种方法是docker inspect <容器名>

第二种方法是docker exec <4 CONTAINER id> bash -c 'echo "$ENV_VAR"'

其他回答

查询所有env变量。

docker exec container env

要得到一个:

docker exec container env | grep VARIABLE | cut -d'=' -f2

你可以用printenv VARIABLE代替/bin/bash -c 'echo $VARIABLE。它要简单得多,并且不执行替换:

docker exec container printenv VARIABLE

上面的答案都没有向您展示如何从非运行的容器中提取变量(如果您在run中使用echo方法,则不会得到任何输出)。

简单地运行printenv,就像这样:

docker run --rm <container> printenv <MY_VAR>

(注意docker-compose也可以代替docker工作)

该命令检查主机上的docker栈进程环境:

pidof   dockerd containerd containerd-shim | tr ' ' '\n' \
      | xargs -L1 -I{} -- sudo xargs -a '/proc/{}/environ' -L1 -0

我们可以使用docker run命令修改非运行容器的入口点。

使用实例显示PATH环境变量。

使用bash和echo:这个答案声称echo不会产生任何输出,这是不正确的。 docker run——rm——entrypoint bash <container> -c 'echo "$PATH"' 使用printenv docker run——rm——entrypoint printenv <容器>的路径