如何在docker运行命令中使用环境变量?

如何在docker运行命令中使用环境变量?,docker,Docker,如果我将容器内部设置的环境变量作为参数传递给docker run,我的shell将对其进行计算。例如: 我希望我的容器打印$FOO的值,即bar。所有这些都不起作用: # Prints blank line $ docker run -e FOO=bar ubuntu echo $FOO # Prints '$FOO' $ docker run -r FOO=bar ubuntu echo \$FOO 如果您在shell中运行echo,则它会工作: $ sudo docker run --r

如果我将容器内部设置的环境变量作为参数传递给
docker run
,我的shell将对其进行计算。例如:

我希望我的容器打印
$FOO
的值,即
bar
。所有这些都不起作用:

# Prints blank line
$ docker run -e FOO=bar ubuntu echo $FOO

# Prints '$FOO'
$ docker run -r FOO=bar ubuntu echo \$FOO

如果您在shell中运行
echo
,则它会工作:

$ sudo docker run --rm -e FOO=bar ubuntu bash -c 'echo $FOO'
bar

这是因为
echo
是一个命令(
/bin/echo
),但它是执行变量替换的shell;实际上是主机在将变量发送给docker之前展开变量,即
FOO=“bar”&&docker运行ubuntu echo$FOO
打印Bart问题的第二部分将变量转义为
\$FOO
,这会阻止展开,并导致打印
$FOO