मूल रूप से मेरा डॉकटर कंटेनर बाहरी इंटरनेट तक पहुंचने में सक्षम था (यह अमेज़ॅन ईसी 2 पर चलने वाला डॉकटर सेवा / कंटेनर है)।
चूँकि मेरा ऐप एक एपीआई है, मैंने अपने कंटेनर के निर्माण का पालन किया (यह अपने सभी ज़रूरी पैकेजों को खींचने में सफल रहा) अपने आईपी टेबल्स को पोर्ट 80 से पोर्ट तक सभी ट्रैफ़िक को रूट करने के लिए अपडेट करने के साथ कि मेरा एपीआई (डॉक पर चल रहा था) सुन रहा है।
फिर, बाद में जब मैंने कंटेनर के पुनर्निर्माण की कोशिश की तो वह विफल हो गया। बहुत संघर्ष के बाद, मुझे पता चला कि मेरे पिछले कदम (IPTable पोर्ट फॉरवर्डिंग रूल की स्थापना) ने डॉकर की बाहरी नेटवर्किंग क्षमता को गड़बड़ कर दिया।
समाधान: अपनी IPTable सेवा बंद करें:
sudo service iptables stop
डॉकटर डेमन को पुनः आरंभ करें:
sudo service docker restart
फिर, अपने कंटेनर के पुनर्निर्माण का प्रयास करें। उम्मीद है की यह मदद करेगा।
जाँच करना
मैंने पूरी तरह से अनदेखी की कि मुझे आने वाले ट्रैफिक को पोर्ट करने के लिए आईपी टेबल्स के साथ गड़बड़ करने की आवश्यकता नहीं है जो कि बंदरगाह पर चल रहे एपीआई पर चल रहा था। इसके बजाय, मैं सिर्फ बंदरगाह का उपयोग कर रहा था पोर्ट running० में एपीआई में चल रहा था:
docker run -d -p 80:<api_port> <image>:<tag> <command to start api>
sysctl -w net.ipv4.ip_forward=1(Centos 6 पर)