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

dam*_*mon 8 docker

如果我将一个环境变量作为参数传递给容器内部docker run,我的shell会对其进行求值.例如:

我希望我的容器打印出的值$FOObar.这些都不会起作用:

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

# Prints '$FOO'
$ docker run -r FOO=bar ubuntu echo \$FOO
Run Code Online (Sandbox Code Playgroud)

z0r*_*z0r 7

如果你echo在shell中运行它是有效的:

$ sudo docker run --rm -e FOO=bar ubuntu bash -c 'echo $FOO'
bar
Run Code Online (Sandbox Code Playgroud)

这是因为echo是一个command(/bin/echo),但它是执行变量替换的shell.