2015-09-05 77 views
8

如果我将容器内设置的环境变量作为参数传递给docker run,我的shell会对其进行评估。例如:如何在docker run命令中使用环境变量?

我希望我的容器打印值为$FOO,即bar。这些都将无法工作:

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

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

回答

7

,如果你在一个shell中运行echo工作:

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

这是因为echo是一个命令(/bin/echo),但它是不变量替换外壳。

+0

我不认为这是原因;它实际上是主机扩展变量,然后它被发送到码头,即'FOO =“bar”&& docker run ubuntu echo $ FOO'打印栏 –

+0

问题的第二部分将变量作为'\ $ FOO'转义,以防止扩展和导致打印'$ FOO'。 – z0r

+0

啊,好的。我没有读过第一个;) –

相关问题