डॉकर-होस्टेड सेवा को केवल उसी होस्ट पर अन्य कंटेनरों के लिए सुलभ बनाना आसान है। अगर आप:
- सर्वर को 0.0.0.0 या ::0 (सभी पते) पर बाइंड करने या सुनने के लिए सेट करें;
- एक गैर-डिफ़ॉल्ट डॉकर नेटवर्क बनाएं (डॉकर कंपोज़ यह स्वचालित रूप से करेगा);
- डॉकर नेटवर्क पर सर्वर कंटेनर और किसी भी संबद्ध क्लाइंट कंटेनर को लॉन्च करें (डॉकर कंपोज़ डिफ़ॉल्ट रूप से ऐसा करेगा); और
- नहीं नहीं एक
docker run -p
सेट करें या डॉकर कंपोज़ports:
विकल्प
तब क्लाइंट कंटेनर होस्ट नाम के रूप में अपने कंटेनर नाम का उपयोग करके सर्वर कंटेनर तक पहुंच सकते हैं, लेकिन होस्ट और अन्य होस्ट पर गैर-डॉकर प्रक्रियाएं सर्वर तक नहीं पहुंच सकती हैं।
यदि आपके होस्ट के पास कई नेटवर्क इंटरफेस हैं और उनमें से किसी एक के लिए बाध्यकारी एक सेवा को "निजी" बना देगा तो आप वही काम docker run -p
के साथ कर सकते हैं। . यदि आपके होस्ट का सार्वजनिक IP पता 10.20.30.40/16 और निजी IP पता 192.168.144.128/24 है, तो docker run -p 192.168.144.128:6379:6379
इसे निजी नेटवर्क (और ऊपर दिए गए अन्य डॉकर कंटेनरों) के लिए उपलब्ध कराएगा, लेकिन सार्वजनिक नेटवर्क को नहीं। (कंटेनर के अंदर सर्वर को अभी भी 0.0.0.0 से बाइंड करने की आवश्यकता है।)
यदि आपको अन्यथा सर्वर को ऑफ-होस्ट दिखाई देने की आवश्यकता है, लेकिन केवल कुछ आईपी पते के लिए, मुझे लगता है कि आप iptables
पर हैं जादू जो डॉकर के मूल निवासी नहीं है।