2014-12-08 8 views
13

मैं एक साधारण Dockerfile लेकिन पहली बार चलाने आदेश है (करने के लिए/etc/hosts एक मेजबान आईपी पते संलग्न करने के लिए) कोई प्रभाव नहींडोकर चलाने के लिए संलग्न/etc/Dockerfile में मेजबान काम नहीं कर रहा

FROM dockerfile/java 
RUN sudo echo "XX.XX.XXX.XXX some.box.com MyFriendlyBoxName" >> /etc/hosts 
ADD ./somejavaapp.jar /tmp/ 
#CMD java -jar /tmp/somejavaapp.jar 
EXPOSE 8280 

मैं निर्माण है

docker build . 

का उपयोग कर और फिर परीक्षण चलाने गूंज लाइन

sudo docker run -t -i <built image ID> /bin/bash 

का उपयोग कर काम किया है मैं कंटेनर में तो हूँ, लेकिन/आदि/मेजबान फ़ाइल संलग्न नहीं किया गया है। एक ही गूंज चल रहा है .... लाइन में अब कंटेनर में वांछित प्रभाव

क्या कोई मुझे बता सकता है कि मेरे डॉकफाइल रन के साथ क्या गलत है ...?

+4

डॉकर '/ etc/hosts' के भीतर रनटाइम पर बनाया जाता है (जब आप 'डॉकर रन' का उपयोग करते हैं)। अन्य लोगों ने कंटेनर के भीतर अतिरिक्त प्रविष्टियां रखने के लिए dnsmasq का उपयोग किया है। 1.2 से आप रनटाइम के बाद '/ etc/hosts' संपादित कर सकते हैं, हालांकि यह काम करने में सहेजा नहीं जाता है, और इस कारण से इसे डॉकरफ़ाइल से नहीं किया जा सकता है। –

+0

धन्यवाद केवीएस उत्तर ने मेरे लिए काम किया लेकिन बीमार इसे ध्यान में रखे। चीयर्स –

उत्तर

20

डॉकर हर बार जब आप एक नया कंटेनर बनाते हैं तो /etc/hosts गतिशील रूप से उत्पन्न होगा। ताकि यह दूसरों को जोड़ सके। आप मेजबान मेजबान मशीन और कंटेनर एक और तरीका है एक खोल स्क्रिप्ट है कि अपने मेजबान '/etc/hosts--add-host पैरामीटर में नक्शे के साथ अपने आदेश रैप करने के लिए किया जाएगा के बीच प्रविष्टियों फ़ाइल बनाए रखने के लिए कोशिश कर रहे हैं

docker run --add-host www.domain.com:8.8.8.8 ubuntu ping www.domain.com 
+0

बिंगो ने बहुत अच्छा काम किया। स्पष्टीकरण के लिए धन्यवाद –

+0

यह बहुत अच्छा है लेकिन मुझे एपीआई (1.15) में यह विकल्प नहीं दिख रहा है। – marcinx

+3

एक आईपी पर कई नाम रखने के लिए डबल कोट्स में संलग्न नाम रखने का प्रयास करें: '--add-host" www.domain.com www.otherdomain.com ": 8.8.8.8' – Stephane

0

: आप --add-host विकल्प का उपयोग कर सकते हैं:

~/bin/java:

#!/bin/sh 

ADD_HOSTS=$(tail -n +10 /etc/hosts | egrep -v '(^#|^$)' | sed -r 's/^([a-z0-9\.\:]+)\s+(.+)$/--add-host="\2:\1"/g') 

eval docker run \ 
    -it \ 
    --rm \ 
    $ADD_HOSTS \ 
    <image> \ 
    java $* 

return $? 

जाहिर है जो कुछ भी आप करने के लिए कोशिश कर रहे हैं के साथ जावा की जगह ...

स्पष्टीकरण; ADD_HOSTS आपके मेजबानों की पहली 10 लाइनों के बाद सब कुछ ले जाएगा /etc/hosts फ़ाइल | टिप्पणियां और रिक्त रेखाएं |--add-host पैराम्स में प्रविष्टियों को फिर से ऑर्डर करें।

पहली 10 लाइनों के बाद सबकुछ लेने का कारण आपकी मेजबान मशीन के लिए लोकलहोस्ट और आईपीवी 6 प्रविष्टियों को बाहर करना है। आपको अपनी जरूरतों के अनुसार इसे समायोजित करने की आवश्यकता हो सकती है।

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