2015-09-05 9 views
8

यदि मैं 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

यह काम करता है अगर आप एक खोल में 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' prints bar –

+0

पर भेजे जाने से पहले वैरिएबल का विस्तार कर रहा है। प्रश्न का दूसरा भाग वैरिएबल से '\ $ FOO' के रूप में निकलता है, जो विस्तार को रोकता है और '$ FOO' मुद्रित होने के परिणामस्वरूप। – z0r

+0

आह, ठीक है। मैंने पहले व्यक्ति को नहीं पढ़ा;) –

संबंधित मुद्दे