2015-09-05 12 views
8

Wenn ich eine Umgebungsvariable übergeben, die innerhalb des Containers als Argument auf docker run festgelegt ist, wertet meine Shell es aus. Zum Beispiel:Wie kann ich Umgebungsvariablen in einem docker run-Befehl verwenden?

Ich möchte, dass mein Container den Wert $FOO ausgibt, also bar. Keiner von ihnen arbeiten:

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

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

Antwort

7

Es funktioniert, wenn Sie echo in einer Shell ausgeführt:

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

Dies liegt daran, echo ein Befehl (/bin/echo), aber es ist die Schale, die die Variablensubstitution tut .

+0

Ich glaube nicht, dass das der Grund ist; Es ist eigentlich der Host, der die Variable erweitert, bevor sie an Docker gesendet wird, dh 'FOO =" bar "&& docker run ubuntu echo $ FOO' druckt die Leiste –

+0

Der zweite Teil der Frage entkommt der Variablen als' \ $ FOO', was die Expansion verhindert und führt dazu, dass $ FOO gedruckt wird. – z0r

+0

Ah, ok. Ich habe nicht über die erste gelesen;) –

Verwandte Themen