127.0.0.1:6379
changing को बदलने का प्रयास करें से redis:6379
।
हालांकि रेडिस चल रहा है, आपका python
कंटेनर इसके साथ संवाद करने में सक्षम नहीं है; ऐसा इसलिए है क्योंकि यह 127.0.0.1:6379
. से कनेक्ट करने का प्रयास कर रहा है , लेकिन कंटेनर के दृष्टिकोण से, वहां कुछ भी नहीं चल रहा है। यह डिबग करने के लिए थोड़ा निराशाजनक हो सकता है, लेकिन यह थोड़ा आसान है यदि आप ध्यान रखें कि कंटेनरों को अपना नेटवर्क नाम स्थान मिलता है। परिणामस्वरूप, python
का लोकलहोस्ट !=redis
का लोकलहोस्ट !=आपके होस्ट मशीन का localhost
।
सौभाग्य से, उन कंटेनरों को जोड़ना आसान है जो समान ब्रिज साझा कर रहे हैं, और डिफ़ॉल्ट रूप से, docker-compose
एक सिंगल ब्रिज नेटवर्क बनाता है और आपके सभी कंटेनरों को उनसे जोड़ता है, उन्हें एक दूसरे को खोजने की अनुमति देने के लिए आवश्यक डीएनएस प्रदान करता है। परिणामस्वरूप, कंटेनर-से-कंटेनर संचार केवल सेवा नाम का उपयोग करके काम करता है।
एक नोट के रूप में, कंटेनर को उसी नामस्थान में चलाना संभव है, और होस्ट के नामस्थान में --net=container:<container-id>
के माध्यम से उन्हें चलाना संभव है। या --net=host
झंडा। यह एक कंटेनर में डिबगिंग टूल चलाने और उन्हें किसी अन्य कंटेनर या होस्ट के नेटवर्क नेमस्पेस से जोड़ने के लिए विशेष रूप से उपयोगी है, उदा। कंटेनर के भीतर कौन से पोर्ट सुन रहे हैं यह देखने के लिए नेटशूट का उपयोग करना (उजागर या नहीं), docker run --rm -it --net container:test_web_1 nicolaka/netshoot netstat -tulpn
।