एक कंटेनर के अंदर से 172.17.0.1 पर डॉकर होस्ट को पिंग / एक्सेस नहीं कर सकता

मेरा डॉकर होस्ट 172.17.0.1 पर सुनता है ।

मैं इसे होस्ट मशीन से कर्ल कर सकता हूं, लेकिन जब मैं कंटेनर के भीतर से उसी आईपी/पोर्ट को कर्ल करता हूं तो मुझे टाइमआउट मिलता है ।

मैं कंटेनर के भीतर से कुछ भी पिंग कर सकता हूं लेकिन मैं मेजबान तक नहीं पहुंच सकता ।

मुझे क्या याद आ रहा है ?

कंटेनर जेनकिंस छवि इस आदेश द्वारा चलाया जाता है:

docker run -d --name jenkins -v jenkins_home:/var/jenkins_home -p 8080:8080 -p 50000:50000 jenkins/jenkins:2.222.3

मेजबान पर कर्ल चल रहा है:

कर्ल http://172.17.0.1:2375 {"संदेश":"पृष्ठ नहीं मिला"}

डॉकर के साथ कर्ल चलाने से समय निकल जाएगा ।

कर्ल http://172.17.0.1:2375 कर्ल: (7) 172.17.0.1 से कनेक्ट करने में विफल पोर्ट 2375: कनेक्शन समय समाप्त हो गया

यह आमतौर पर है क्योंकि होस्ट पर आईपीटीबल्स डॉकर नेटवर्क से पहुंच को अवरुद्ध कर रहा है । आप देख सकते हैं iptables -S या iptables -nvL अपने वर्तमान नियमों को देखने के लिए ।


उस ने कहा, यदि आप डॉकर एपीआई खोलते हैं, तो आपको सावधान रहना होगा कि उस एपीआई तक कौन पहुंच सकता है । पोर्ट 2375 का उपयोग करने का आमतौर पर मतलब है कि आपने एमटीएल को कॉन्फ़िगर नहीं किया है, देखें एमटीएलएस स्थापित करने के लिए डॉकर गाइड. इसका मतलब है कि पोर्ट तक पहुंच वाला कोई भी व्यक्ति एपीआई कॉल सबमिट कर सकता है, जिसका अर्थ है कि एक अप्रकाशित स्थानीय उपयोगकर्ता, या कोई अन्य कंटेनर, आपके होस्ट पर रूट प्राप्त करने की क्षमता रखता है । आपके मामले में, यह उतना ही आसान है:

docker -H tcp://172.17.0.1:2375 run -it --rm --privileged --pid host debian nsenter -t 1 -m -u -n -i bash

अनुशंसित समाधान या तो कंटेनर के अंदर डॉकर इंजन को चलाने के लिए डिंड का उपयोग करना है, या डॉकर सॉकेट को फ़ाइल के लिए उपयुक्त यूआईडी/जीआईडी एक्सेस के साथ फ़ाइल/वॉल्यूम माउंट के रूप में साझा करना है । यह केवल यह सुनिश्चित करता है कि कंटेनर के पास सभी उपयोगकर्ताओं और होस्ट पर चलने वाले किसी भी कंटेनर के बजाय डॉकर इंजन तक पहुंच हो । वॉल्यूम में घुड़सवार फ़ाइलों के साथ यूआईडी/जीआईडी एक्सेस मुद्दों को संभालने के लिए, मैंने इसे विशेष रूप से जेनकींस छवियों के लिए किया है जेनकींस-डॉकर रेपो, और मेरे में एक और सामान्य समाधान है मेरे डॉकर-बेस रेपो में फिक्स-पर्म स्क्रिप्ट.

बिमिच-मैंने इसका पता लगा लिया है-लेकिन आपके पास यह सही भी है (क्या आपको इसे एक उत्तर के रूप में पोस्ट करना चाहिए जिसे मैं स्वीकार करूंगा और हटा दूंगा) आईपीटीबल्स ने पहुंच को अवरुद्ध कर दिया । एक बार जब मैंने इसे खोला - यह उम्मीद के मुताबिक काम किया ।

होस्ट पर फ़ायरवॉल कैसे कॉन्फ़िगर किया गया है? कृपया अपने प्रश्न में आईपीटीबल्स-एस आउटपुट शामिल करें ।

@BMitch - तुम सही थे. iptables के अवरुद्ध का उपयोग. आप इसे उत्तर के रूप में पोस्ट कर सकते हैं ।

इसके अतिरिक्त, डॉकर सॉकेट को नेटवर्क में उजागर करना सर्वर को हैक करने के लिए तुच्छ बनाता है । नेटवर्क एक्सेस वाला कोई भी व्यक्ति, चाहे कोई अप्रकाशित स्थानीय उपयोगकर्ता या कोई भी रिमोट, डॉकर-एच टीसीपी://172.17.0.1:2375 रन-इट-आरएम-विशेषाधिकार प्राप्त-पीआईडी होस्ट डेबियन एनसेंटर-टी 1-एम-यू-एन-आई बैश चला सकता है । या तो समूह अनुमतियों और वॉल्यूम माउंट, या सेटअप एमटीएलएस के साथ सॉकेट फ़ाइल तक पहुंच दें । Redirecting…