आप डॉकर के माध्यम से ऐसा नहीं कर सकते, लेकिन आप मेजबान मशीन से कंटेनर के अन-एक्सपोज़र पोर्ट तक पहुँच सकते हैं।
यदि आपके पास एक कंटेनर है जो 8000 बंदरगाह पर चल रहा है, तो आप चला सकते हैं
wget http://container_ip:8000
कंटेनर का आईपी पता प्राप्त करने के लिए, 2 कमांड चलाएं:
docker ps
docker inspect container_name | grep IPAddress
आंतरिक रूप से, जब आप एक छवि चलाते हैं, तो डॉकटर iptables को कॉल करता है, इसलिए शायद इस पर कुछ बदलाव काम करेगा।
कंटेनर की पोर्ट 8000 को अपने लोकलहोस्टेस पोर्ट 8001 पर उजागर करने के लिए:
iptables -t nat -A DOCKER -p tcp --dport 8001 -j DNAT --to-destination 172.17.0.19:8000
एक तरह से आप इसे बाहर काम कर सकते हैं, एक अन्य कंटेनर को पोर्ट मैपिंग के साथ सेटअप करना है जिसे आप चाहते हैं, और iptables-save कमांड के आउटपुट की तुलना करें (हालांकि, मुझे कुछ अन्य विकल्पों को हटाना पड़ा जो ट्रैफ़िक को डॉकटर के माध्यम से जाने के लिए मजबूर करते हैं। प्रॉक्सी)।
नोट: यह सबकुछ करने वाला है, इसलिए इसे इस जागरूकता के साथ किया जाना चाहिए कि यह अच्छी तरह से नीला धुआं पैदा कर सकता है
या
एक और विकल्प है, नया (नई पोस्ट 0.6.6?) -प ऑप्शन देखना है - जो रैंडम होस्ट पोर्ट का उपयोग करेगा, और फिर उन्हें वायर करेगा।
या
0.6.5 के साथ, आप नए कंटेनर को लाने के लिए लिंक सुविधा का उपयोग कर सकते हैं जो उस कंटेनर के-पी झंडे के साथ कुछ अतिरिक्त रिले के साथ मौजूदा एक से बात करता है? (मैंने अभी तक लिंक का उपयोग नहीं किया है)
या
डॉकटर के साथ 0.11? आप docker run --net host ..
अपने कंटेनर को होस्ट के नेटवर्क इंटरफेस से सीधे संलग्न करने के लिए उपयोग कर सकते हैं (अर्थात, नेट नाम-स्थान नहीं है) और इस प्रकार आपके द्वारा कंटेनर में खोले गए सभी पोर्ट उजागर हो जाते हैं।