2016-07-11 14 views
19

मैं "डॉकर बिल्ड" के दौरान अपनी /etc/hosts फ़ाइल को अपडेट करना चाहता हूं।"डॉकर बिल्ड" के दौरान डॉकर छवि में/etc/hosts फ़ाइल को अपडेट करने के लिए कैसे करें

मैंने डॉकरफ़ाइल में नीचे दी गई रेखा को जोड़ा लेकिन यह न तो /etc/hosts फ़ाइल अपडेट कर रहा है और न ही कोई त्रुटि दे रहा है।

RUN echo "192.168.33.11 mynginx" >> /etc/hosts 

मैं /etc/hosts अपडेट करना होगा। क्या कोई इस पर सुझाव दे सकता है?

+0

आप boot2docker उपयोग कर रहे हैं अपने डोकर निर्माण निष्पादित करने के लिए? – VonC

+0

नहीं, मैं डॉकर 1.8 के लिनक्स संस्करण का उपयोग कर रहा हूं। –

+1

और जब आप एक कंटेनर के रूप में अपनी छवि चला रहे हैं, तो इसके/etc/hosts अपरिवर्तित हैं? या आप अपने लिनक्स होस्ट/आदि/होस्ट का जिक्र कर रहे थे? – VonC

उत्तर

22

डोकर के नवीनतम संस्करण के साथ, इस डोकर-लिखें सुविधा के साथ किया जा सकता है और इसके extra_hosts directive

होस्ट नाम मैपिंग जोड़ें।
docker run client --add-host parameter (जो पहले से ही डॉकर 1.8 के लिए उपलब्ध होना चाहिए) के समान मानों का उपयोग करें।

extra_hosts: 
- "somehost:162.242.195.82" 
- "otherhost:50.31.209.229" 

संक्षेप में: अपने कंटेनर के /etc/hosts संशोधित जब यह चल रहा है, यह निर्माण नहीं।

+0

मैं डॉकर छवि में/etc/hosts को बदलना चाहता हूं। –

+0

@PrakashSingh मैं सहमत हूं, लेकिन ऐसा करना आसान नहीं लगता है। – VonC

+0

किसी ने भी इस उपयोग के मामले को लागू नहीं किया है? –

0

डोकर के बजाय चलाने डोकर दौरान फ़ाइल बढ़ते द्वारा मेरे लिए काम किया अनुसरण निर्मित

docker service create --name <name> --mount type=bind,source=/etc/hosts,dst=/etc/hosts <image> 
5

आप चलाना चरण में गूंज का उपयोग कर, क्योंकि डोकर फ़ाइल बनाए रखेंगे जब आप इसे शुरू कर देंगे मेजबान फ़ाइल को संशोधित नहीं कर सकते हैं और फ़ाइल की सामग्री डॉकर द्वारा प्रबंधित की जाएगी।

हालांकि निम्नलिखित एक ही प्राप्त करने के लिए इस्तेमाल किया जा सकता:

ENTRYPOINT ["/bin/sh", "-c" , "echo 192.168.254.10 database-server >> /etc/hosts && echo 192.168.239.62 redis-ms-server >> /etc/hosts && exec java -jar ./botblocker.jar " ] 

कुंजी यहाँ सूचना के लिए कार्यकारी आदेश डोकर प्रलेखन का सुझाव के रूप में इस्तेमाल होता है। exec का उपयोग जावा कमांड को कंटेनर के लिए पीआईडी ​​1 के रूप में बनाएगा। डॉकर इंटरप्ट्स केवल इसका जवाब देंगे।

docker exec -it <container name> /bin/bash 

एक बार कंटेनर खुला है:

का उपयोग कर अपने कंटेनर को चलाने के लिए https://docs.docker.com/engine/reference/builder/#entrypoint

+0

ty! यह एक अच्छा समाधान है – xero

+0

यदि आप कुबेनेट समाधान की तलाश में हैं तो आप होस्टअलीज़ का उपयोग कर सकते हैं। https://kubernetes.io/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/ जैसे डॉकर अतिरिक्त_होस्ट लिखते हैं। –

-3

बस एक त्वरित जवाब देखें

cd .. 

तो

`cd etc` 

और फिर आप

cat hosts 

या कर सकते हैं:

apt-get update 
apt-get vim 

या आप की तरह और vim में खोलने के किसी भी संपादक, यहाँ आप के लिए 0.0.0.0

2

मुझे लगता है कि अपने स्टार्टअप आईपी कहना संशोधित कर सकते हैं डॉकर ने हाल ही में --add-host ध्वज को डॉकर बिल्ड में जोड़ा जो वास्तव में महान है।

[संपादित करें] तो इस सुविधा 17.04.0-ce

पर अद्यतन किया गया था कैसे --add-host ध्वज के साथ docker build उपयोग करने के लिए कृपया देखें पर अधिक विस्तार के लिए: https://docs.docker.com/edge/engine/reference/commandline/build/

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