2015-04-28 4 views
33

मेरी डॉकर-compose.yml फ़ाइल में, मेरे पास निम्न है। हालांकि कंटेनर होस्टनाम मान नहीं लेता है। कोई विचार?मैं डॉकर कंपोज़ में होस्टनाम कैसे सेट करूं?

dns: 
    image: phensley/docker-dns 
    hostname: affy 
    domainname: affy.com 
    volumes: 
    - /var/run/docker.sock:/docker.sock 
+2

मैं आपके सवाल का सही ढंग से संपादित किया है पूर्वस्वरूपित पाठ प्रदर्शित करने के लिए क्या अंत में मेरे लिए काम किया था लिखें में HOSTNAME env चर स्थापित कर रही है। यह इसे और अधिक पठनीय बनाता है। – larsks

+1

आप किस कम्पोज का उपयोग कर रहे हैं? – kojiro

उत्तर

23

ऐसा लगता है कि यह सही तरीके से काम करता है। अगर मैं एक फ़ाइल में अपने config डाल:

$ cat > compose.yml <<EOF 
dns: 
    image: phensley/docker-dns 
    hostname: affy 
    domainname: affy.com 
    volumes: 
    - /var/run/docker.sock:/docker.sock 
EOF 

और फिर चीजों को लाने:

$ docker-compose -f compose.yml up 
Creating tmp_dns_1... 
Attaching to tmp_dns_1 
dns_1 | 2015-04-28T17:47:45.423387 [dockerdns] table.add tmp_dns_1.docker -> 172.17.0.5 

और फिर कंटेनर के अंदर होस्ट नाम की जाँच करें, सब कुछ ठीक हो रहा है:

$ docker exec -it stack_dns_1 hostname 
affy.affy.com 
+0

आप किस कम्पोज का उपयोग कर रहे हैं? – kojiro

+0

यह प्रारूप डॉकर-कंपोज़ के नवीनतम संस्करण में काम नहीं करता है। वाईएमएल फाइलें जटिल चीजें हैं; क्या आप वाकई डीएनएस के लिए सही प्रारूप हैं? –

+2

वाईएमएल फाइल वास्तव में सभी जटिल नहीं हैं। "काम नहीं करता" मतलब क्या है?[डॉक्स] के अनुसार (https://docs.docker.com/compose/compose-file/), 'होस्टनाम' और' डोमेन नाम 'दोनों वैध' docker-compose.yml' विकल्प हैं। अपडेट: अभी परीक्षण किया गया है, अभी भी ठीक काम करता है (डॉकर-कंपोज़ संस्करण 1.4.2, डॉकर संस्करण 1.8.2)। – larsks

9

डॉकर प्रलेखन के आधार पर: https://docs.docker.com/compose/compose-file/#/command

मैं बस hostname: <string> मेरी डॉकर-कंपोज़ फ़ाइल में डालें।

उदा .:

[...] 

lb01: 
    hostname: at-lb01 
    image: at-client-base:v1 

[...] 

और कंटेनर lb01 at-lb01 होस्ट नाम के रूप ऊपर उठाता है।

+0

यदि आपके पास डॉकर-कंपोज़ फ़ाइल में एकाधिक कंटेनर हैं, तो क्या आप प्रत्येक कंटेनर के लिए होस्टनाम सेट करेंगे? यह बहुत अक्षम लगता है? – vgoklani

+0

यदि आपको कंटेनरों के लिए जाने-माने नाम की आवश्यकता है जो व्यवहार्य समाधान है। –

2

मैंने पाया कि docker run का उपयोग करते समय होस्टनाम अन्य कंटेनर के लिए दृश्यमान नहीं था। यह पता चला है एक known issue (शायद अधिक एक ज्ञात सुविधा) होने के लिए, चर्चा होने का भाग के साथ:

हम शायद होस्ट नाम का उपयोग कर के बारे में किए गए दस्तावेज़ों के लिए एक चेतावनी जोड़ने चाहिए। मुझे लगता है कि यह शायद ही कभी उपयोगी है।

एक होस्ट नाम बताए का सही तरीका - कंटेनर नेटवर्किंग के मामले में - तो जैसे define an alias के लिए है:

services: 
    some-service: 
    networks: 
     some-network: 
     aliases: 
      - alias1 
      - alias2 

दुर्भाग्य से इस अभी भीdocker run साथ काम नहीं करता।

docker-compose run --name alias1 some-service 

और alias1 तो अन्य कंटेनरों से पिंग किया जा सकता है: वैकल्पिक हल कंटेनर एक नाम निर्दिष्ट करने के लिए है।

1

मुझे काम करने के लिए freeipa container स्पिन करने की आवश्यकता थी और इसे होस्टनाम देना था अन्यथा यह नहीं चल रहा था। अपने काम के

version: 2 
services: 
    freeipa: 
    environment: 
     - HOSTNAME=ipa.example.test 

अब:

docker exec -it freeipa_freeipa_1 hostname 
ipa.example.test 
संबंधित मुद्दे