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

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

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

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

谢谢。


当前回答

查询所有env变量。

docker exec container env

要得到一个:

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

其他回答

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

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

查询所有env变量。

docker exec container env

要得到一个:

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

如果你碰巧使用VSCode并且已经安装了docker扩展,只需右击你想要检查的docker(在docker扩展内),单击Inspect,然后在那里搜索env,你会找到所有的env变量值

如果你不关心环境变量是什么时候声明的,@aisbaa的答案是有效的。如果你想要环境变量,即使它已经在exec /bin/bash会话中声明了,也可以使用如下代码:

IFS="=" read -a out <<< $(docker exec container /bin/bash -c "env | grep ENV_VAR" 2>&1)

它不是很漂亮,但它能完成任务。

要得到值,使用:

echo ${out[1]}

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

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