एक डॉकर कंटेनर और उसके उपयोग से पोर्ट पुनर्निर्देशन डॉकर अपने स्वयं के आईपीटीबल्स नियम/श्रृंखलाएं स्थापित करता है जो शोरवॉल को फिर से शुरू करने पर मारे जाएंगे । तो कंटेनर बन जाएगा अगम्य.
क्या कोई शोरवेल पुनरारंभ पर डॉकर नियमों को सहेजने/पुनर्स्थापित करने में कामयाब रहा है या किसी के पास कोई अन्य समाधान है?
निम्नलिखित कॉन्फ़िगरेशन परिवर्तनों को डॉकर और शोरवेल होस्ट के बीच ट्रैफ़िक प्रवाह सुनिश्चित करना चाहिए । शोरवेल 4.5.21.9 पर परीक्षण किया गया लेकिन सबसे हाल के संस्करणों पर लागू होना चाहिए:
/आदि/shorewall/shorewall.conf
सुनिश्चित करें कि आईपी अग्रेषण सक्षम है (अधिकांश कॉन्फ़िगरेशन आइटम हां/नहीं हैं, लेकिन यह "चालू"है):
IP_FORWARDING=On
/आदि/shorewall/masq
अपने निजी डॉकर नेटवर्क के लिए मास्कराइडिंग (एनएटी) सक्षम करें (यदि आप एक अलग नेटवर्क का उपयोग करते हैं, यानी आप डॉकर लॉन्च करते हैं --bip=#.#.#.#/#, फिर तदनुसार बदलें) । बदलें eth0 बाहरी कनेक्टिविटी के साथ होस्ट मशीन पर किसी भी इंटरफ़ेस के लिए:
#INTERFACE:DEST SOURCEeth0 172.17.0.0/16
/आदि/shorewall/इंटरफेस
एक इंटरफ़ेस प्रविष्टि जोड़ें ताकि शोरवॉल जानता है कि कौन सा इंटरफ़ेस dock जोन से संबंधित है:
#ZONE INTERFACE OPTIONSdock docker0
/आदि/shorewall/क्षेत्र
एक नया क्षेत्र बनाएं; ध्यान दें, docker बहुत लंबा है और "अमान्य ज़ोन नाम" त्रुटि का कारण होगा ।
#ZONE INTERFACEdock ipv4
/आदि/shorewall/नीति
आप शायद डॉकर कंटेनरों को होस्ट मशीन से बात करने की अनुमति देना चाहते हैं और इंटरनेट, तो यह एक अच्छा प्रारंभिक बिंदु है:
#SOURCE DEST POLICY# ...(other policies)...dock all ACCEPT# ...(other policies, catch-all)...
आपको एक समान की भी आवश्यकता हो सकती है ACCEPT से यातायात के लिए नीति fw को dock, यदि आपने इसे पहले से नहीं खोला है fw को all.
आप इसे और अधिक कस सकते हैं नीति या नियम आवश्यकतानुसार फ़ाइलें। उदाहरण के लिए, उपरोक्त स्पष्ट रूप से बाहरी ट्रैफ़िक को आपके डॉकर कंटेनरों तक पहुंचने की अनुमति नहीं देता है; उसके लिए अपने अन्य क्षेत्रों/नीतियों/नियमों की जाँच करें ।
चूंकि डॉकर ने अपना नेटवर्क आइसोलेशन फीचर पेश किया है, इसलिए यदि आप कस्टम नेटवर्क का उपयोग करना चाहते हैं तो यहां बताए गए अन्य समाधान पर्याप्त नहीं हैं । Shorewall 5.0.6 का परिचय डॉकर के लिए समर्थन जिसमें डॉकर नेटवर्क भी शामिल है । यह:
शोरवॉल और डॉकर को किसी भी क्रम में शुरू/बंद/पुनरारंभ करने की अनुमति देता है
एक्सटेंशन स्क्रिप्ट को बनाए रखने की आवश्यकता से बचा जाता है
आप यह सुनिश्चित कर सकते हैं कि डॉकर नियम एक्सटेंशन स्क्रिप्ट बनाकर शोरवॉल पुनरारंभ से बचता है जो सहेजता है DOCKER पुनरारंभ करने से पहले चेन, और फिर बाद में इसे फिर से पुनर्स्थापित करें । मैं सिर्फ एक के साथ एक पोस्ट डाल दिया है यह कैसे करना है इसका उदाहरण, हालांकि मुझे यकीन है कि यह एकमात्र संभव विधि से बहुत दूर है ।
बस इसे मेरे बॉक्स पर लगा दिया । सुनिश्चित करें कि /etc/shorewall.conf है:
IP_FORWARDING=Yes
डॉकर अग्रेषण पर निर्भर करता है, और मैंने कहा कि 'कठपुतली' इसे मेरे सभी सर्वरों पर 'नहीं' पर सेट करता है ।
अपडेट करें: आपको शायद अपने वैन इंटरफ़ेस से डॉकर से आने वाले ट्रैफ़िक को भी बहाना होगा ।
संपादित करें /etc/shorewall/masq और आप के लिए इसी तरह की एक लाइन की आवश्यकता होगी:
br0 172.17.0.0/12
इस मामले में, मेरा वैन इंटरफ़ेस वास्तव में बीआर 0 (एक पुल) है, लेकिन आपका शायद एथ0 जैसा कुछ होगा । (उपयोग करें ifconfig अपने इंटरफेस और उनके आईपी पते देखने के लिए) । मेरी मशीन पर डॉकर 172.17.0.0/24 का उपयोग करता है जो एक आरएफसी 1 9 18 निजी पता सीमा है । यह अन्य प्रणालियों पर भिन्न हो सकता है, लेकिन आप इसका उपयोग करके सीमा देख सकते हैं ifconfig एक बार फिर इंटरफ़ेस देखने के लिए docker0.
एक संभावित विकल्प डॉकर को चलाने के लिए है --नेट=होस्ट विकल्प, कंटेनरीकृत एप्लिकेशन एक्सेस होस्ट नेटवर्क को आईपी अग्रेषण और एनएटी के बिना अनुमति देने के लिए ।
चल रहे कंटेनरों को प्रभावित किए बिना डॉकर सेवा को फिर से शुरू किया जा सकता है, और डॉकर विशिष्ट नियमों को फिर से लोड करने के लिए शोरवॉल पुनरारंभ होने के बाद चलाया जा सकता है । स्पष्ट रूप से एक छोटा समय होगा जहां कंटेनर(ओं) के लिए नेटवर्किंग बाधित है ।
यह कम से कम मेरे कुछ आर्कलिनक्स इंस्टॉल पर सच है ।
रीफ्रेश एक्शन आईपीटेबल को शुद्ध नहीं करता है, इसलिए यदि आप केवल नियमों या नीतियों को रीफ्रेश करना चाहते हैं, तो आप रीस्टार्ट के बजाय रीफ्रेश चला सकते हैं :
sudo shorewall refresh
जाहिर है, समस्या अभी भी बनी हुई है यदि आपको वास्तव में शोरवेल को पुनरारंभ करने की आवश्यकता है । फिर, आपको डॉकर को पुनरारंभ करना होगा और अपने कंटेनरों को फिर से बनाना होगा ।