如何在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
。