रनिंग कंटेनर के लिए होस्टनाम कैसे निर्दिष्ट करें?


51

मुझे एक चल रहे डॉकटर कंटेनर पर होस्टनाम सेट करने में समस्या हो रही है। मुझे यह समझने में भी परेशानी हो रही है कि इमेज शुरू होने के बाद hostname कैसे निर्दिष्ट करें ।

मेरे द्वारा डाउनलोड की गई छवि से मैंने एक कंटेनर शुरू किया:

sudo docker run -p 8080:80 -p 2222:22 oskarhane/docker-wordpress-nginx-ss

लेकिन मैं के माध्यम से होस्टनाम निर्दिष्ट करना भूल गया -h; अब मैं होस्टनाम कैसे निर्दिष्ट कर सकता हूं कि कंटेनर चल रहा है?


क्या आप कंटेनर को रोक सकते हैं और इसे फिर से शुरू कर सकते हैं एक hostname की आपूर्ति?
dawud

AFAIK है कि केवल जब तुम runएक छवि काम करता है , जब तुम एक कंटेनर शुरू नहीं।
मिगेल पिंग

कभी-कभी आप सभी चाहते हैं कि बैश कमांड प्रॉम्प्ट को उचित नाम से देखा जाए। अगर ऐसा है, तो आप .bashrc में PS1 मान को संपादित कर सकते हैं। को देखो askubuntu.com/a/549150/55365 सुझाव के लिए। किसी भी PS1 में आप सर्वर या सेवा के नाम के साथ इसे सेट करने के लिए * या # के चारों ओर एक (रंगीन) स्ट्रिंग जोड़ सकते हैं।
SPRBRN

@dawud आप कोई नया होस्टनाम जब runing नहीं दे सकता docker restart प्रलेखन
dangonfast

जवाबों:


48

संपादित /etc/hostnameकरना एक चीज है जिसके लिए आपको कंटेनर के अंदर ssh एक्सेस की आवश्यकता होती है। अन्यथा, आप -hविकल्प के साथ कंटेनर को स्पिन कर सकते हैं ।

होस्ट और डोमेन नाम सेट करने के लिए:

$ docker run -h foo.bar.baz -i -t ubuntu bash
root@foo:/# hostname
foo
root@foo:/# hostname -d
bar.baz
root@foo:/# hostname -f
foo.bar.baz

5
आप docker exec /bin/bashएक चालू कंटेनर पर कर सकते हैं , स्थापित करने की आवश्यकता नहीं है ssh(जो कि प्रशासन के उद्देश्यों के लिए एक बुरा अभ्यास है)।
जजमोंट्स

आप यह भी संपादित कर सकते हैं / etc / host कि यह एक पते में सही ढंग से हल हो गया है।
dtoubelis

2
आप एक hostnameलापता कंटेनर में होस्टनाम को बदल नहीं सकते हैं (लापता क्षमता)। रनिंग दिए गए होस्टनाम के साथ docker run -h <hostname> <image> <container-name>एक नया कंटेनर बनाता है ।
डॉन्गफ़ास्ट

6

कंटेनर और सेवा बंद करो

sudo docker stop CONTAINER_NAME
sudo service docker stop

कॉन्फ़िग फ़ाइल (JSON) संपादित करें [आपको पहले बैकअप बनाना चाहिए]

/var/lib/docker/containers/CONTAINER_ID/config.json

बदलने के

"होस्टनाम": "जो कुछ भी"

साथ में

"होस्टनाम": "NEW_HOSTNAME"

कंटेनर और सेवा शुरू करें

sudo service docker start
sudo docker start CONTAINER_NAME

(वैकल्पिक रूप से आप docker को भी संलग्न कर सकते हैं)

sudo docker attach CONTAINER_NAME

डॉकरों के बारे में विवरण (यानी CONTAINER_NAME, CONTAINER_ID) को चलाकर प्राप्त किया जा सकता है

sudo docker ps -a

काम नहीं करता है। ओवरराइट हो जाओ मैं कंटेनर शुरू करते हैं।
अहमद

वह अजीब है। मैंने अभी इन चरणों का पुनरुत्पादन किया है और यह अभी भी काम कर रहा है। डॉकटर संस्करण 1.7.1। क्या आप सुनिश्चित हैं कि आपने फ़ाइल संपादित करने से पहले कंटेनर और सेवा बंद कर दी थी?
15

डॉकर 17.04.0-CE पर काम करता है, जब संपादन / आदि / होस्टनाम नहीं था। यदि आपने अभी तक कंटेनर नहीं बनाया है, तो -h के साथ अन्य उत्तर बेहतर है, लेकिन मेरे मामले में मैं पहले ही कंटेनर को स्थापित करने की परेशानी में चला गया था और इसे केवल होस्टनाम सेट करने के लिए इसे फिर से बनाना नहीं चाहता था।
ऊना

काम नहीं करताDocker version 17.05.0-ce, build 89658be
डॉ।

4

कंटेनर को फिर से शुरू करना सबसे आसान विकल्प होगा - लेकिन आप / etc / hostname को संपादित भी कर सकते हैं और वहाँ से जा सकते हैं।


/etc/hostnameपुनरारंभ करने के बाद संपादन का कोई प्रभाव नहीं है, क्योंकि यह प्रत्येक बार "वास्तविक" होस्टनाम के साथ अधिलेखित होता है, जिसे डॉकटर द्वारा प्रबंधित किया जाता है। आप hostnameकंटेनर पर नहीं चल सकते हैं , क्योंकि कंटेनर में उस ऑपरेशन के लिए कोई क्षमता नहीं है (डिफ़ॉल्ट रूप से, और आप इसे बदलना नहीं चाहते हैं)
dangonfast

और /etc/hostnameकंटेनर को फिर से शुरू और संपादित करने का कोई उद्देश्य नहीं है।
डॉंगफेस्ट


1

https://evolveweb.ca/blog/changing-docker-hostnames-namespaces ऐसा करने का एक तरीका बताता है। मूल विचार docker inspectकंटेनर के ढक्कन को प्राप्त करने के लिए उपयोग करना है, फिर कंटेनर के uts नाम स्थान में प्रवेश करें nsenterhostnameउस नेमस्पेस के अंदर चल रहा है होस्टनाम बदल जाएगा dok उदाहरण के लिए जो उस नाम स्थान को साझा करता है।


2
कृपया सीधे यहां समाधान जोड़ें, और एक बाहरी लिंक नहीं जो गायब हो सकता है
अनाथ

0

जैसा कि कुछ अन्य लोगों ने बताया है, यह config.v2.jsonफ़ाइल को संशोधित करके कंटेनरों के लिए बदला जा सकता है ।

बस सुनिश्चित करें कि फ़ाइल संपादित होने से पहले डॉकर सेवा बंद कर दी गई है, अन्यथा यह सब कुछ होगा। इस क्रम में जरूरी कदम उठाए जाने चाहिए

  • कंटेनर बंद करो
  • डॉकर सेवा बंद करें
  • - /var/lib/docker/containers/CONTAINER_ID/config.v2.json- फ़ाइल को संशोधित करें

  • डॉकर सेवा शुरू करें

  • कंटेनर शुरू करें

यह मेरे लिए Docker v17.05.0-ce, एक कंटेनर का उपयोग करने पर काम करने की पुष्टि की गई है --net=host/etc/hostnameफ़ाइल को संशोधित करना काम नहीं करता है और फ़ाइल को केवल ओवरराइट किया जाता है।


-3

में

 /var/lib/docker/containers/CONTAINER/config.json

खोजें और सेट करें

"Config":{"Hostname":"utils","Domainname":"mysite.com", ...}

काम नहीं करता है Docker version 17.05.0-ce, build 89658be। विन्यास अधिलेखित हो जाता है, कौन कहां से जानता है। और होस्टनाम स्वयं को पुनरारंभ करने के बाद नहीं बदलता है।
डंगऑनफ़ास्ट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.