सवाल डॉकर कंटेनर के भीतर सुरक्षा अद्यतनों को कैसे संभालें?


सर्वर पर अनुप्रयोगों को तैनात करते समय, आमतौर पर एप्लिकेशन के साथ बंडल और प्लेटफ़ॉर्म (ऑपरेटिंग सिस्टम और इंस्टॉल किए गए पैकेज) से अपेक्षा की जाने वाली चीज़ों के बीच एक अलगाव होता है। इसका एक मुद्दा यह है कि मंच को एप्लिकेशन के स्वतंत्र रूप से अपडेट किया जा सकता है। यह उदाहरण के लिए उपयोगी है जब पूरे एप्लिकेशन को पुनर्निर्माण किए बिना प्लेटफार्म द्वारा प्रदान किए गए पैकेजों के लिए तत्काल सुरक्षा अद्यतनों को लागू करने की आवश्यकता है।

परंपरागत रूप से सुरक्षा अद्यतन केवल ऑपरेटिंग सिस्टम पर संकुल के अद्यतन संस्करणों को स्थापित करने के लिए पैकेज प्रबंधक कमांड निष्पादित करके लागू किया गया है (उदाहरण के लिए आरएचईएल पर "यम अपडेट")। लेकिन डॉकर जैसी कंटेनर तकनीक के आगमन के साथ जहां कंटेनर छवियां अनिवार्य रूप से दोनों एप्लिकेशन को बंडल करती हैं तथा मंच, कंटेनरों के साथ सिस्टम को अद्यतित रखने का कैननिक तरीका क्या है? मेजबान और कंटेनरों दोनों के पास अपने स्वयं के, स्वतंत्र, पैकेजों के सेट होते हैं जिन्हें होस्ट पर अद्यतन करने और अद्यतन करने की आवश्यकता होती है, वे कंटेनरों के अंदर किसी भी पैकेज को अपडेट नहीं करेंगे। आरएचईएल 7 की रिहाई के साथ जहां डॉकर कंटेनर विशेष रूप से विशेष रुप से प्रदर्शित होते हैं, यह सुनना दिलचस्प होगा कि कंटेनरों के सुरक्षा अद्यतनों को संभालने के लिए रेडहाट के अनुशंसित तरीके क्या हैं।

कुछ विकल्पों पर विचार:

  • मेजबान पर पैकेज प्रबंधक अद्यतन संकुल को देने से कंटेनरों के अंदर संकुल अद्यतन नहीं होंगे।
  • अपडेट लागू करने के लिए सभी कंटेनर छवियों को पुन: उत्पन्न करने के लिए एप्लिकेशन और प्लेटफार्म के बीच अलगाव तोड़ना प्रतीत होता है (प्लेटफॉर्म को अद्यतन करने के लिए एप्लिकेशन निर्माण प्रक्रिया तक पहुंच की आवश्यकता होती है जो डॉकर छवियां उत्पन्न करता है)।
  • प्रत्येक चलने वाले कंटेनर के अंदर मैन्युअल कमांड चलाना बोझिल लगता है और अगली बार कंटेनर को एप्लिकेशन रिलीज आर्टिफैक्ट्स से अपडेट किए जाने पर ओवरराइट होने का जोखिम होता है।

तो इनमें से कोई भी दृष्टिकोण संतोषजनक प्रतीत नहीं होता है।


103
2017-07-08 21:54


मूल


इस के लिए अब तक का सबसे अच्छा विचार है परियोजना परमाणु। मुझे नहीं लगता कि यह है काफी प्राइम टाइम के लिए तैयार हालांकि। - Michael Hampton♦
वाल्को, आप किस वर्कफ़्लो के साथ समाप्त हुआ? मैं लंबी अवधि के कंटेनर चला रहा हूं (उदाहरण के लिए php-cgi होस्टिंग) और जो मैंने अभी तक पाया है वह है: docker pull debian/jessie छवि को अपडेट करने के लिए, फिर मेरी मौजूदा छवियों का पुनर्निर्माण करें, फिर कंटेनर को रोकें और उन्हें फिर से चलाएं (नई छवि के साथ)। मेरे द्वारा बनाई गई छवियों का पिछले नाम जैसा ही नाम है, इसलिए शुरुआत स्क्रिप्ट के माध्यम से की जाती है। मैं फिर "अनामित" छवियों को हटा देता हूं। मैं निश्चित रूप से एक बेहतर वर्कफ़्लो की सराहना करता हूं। - miha
miha: यह वही लगता है जो मैंने किया है। नई रिलीज बनाने के हिस्से के रूप में सभी छवियों को मूल रूप से अद्यतन और पुनर्निर्माण करना। और नई छवियों का उपयोग कर कंटेनरों को पुनरारंभ करना। - Markus Hallmann
सबसे अच्छा जवाब यहाँ बहुत मदद करता है क्योंकि एक ऐसी स्क्रिप्ट है जिसमें मुख्य कमांडलाइन शामिल हैं जो वास्तव में जोहान्स ज़ेमेके ने कहा था: - Hudson Santos


जवाब:


एक डॉकर छवि बंडल एप्लिकेशन और "प्लेटफार्म", यह सही है। लेकिन आमतौर पर छवि मूल छवि और वास्तविक अनुप्रयोग से बना है।

तो सुरक्षा अद्यतनों को संभालने का वैधानिक तरीका आधार छवि को अद्यतन करना है, फिर अपनी एप्लिकेशन छवि का पुनर्निर्माण करना है।


43
2017-08-12 11:41



धन्यवाद, यह उचित लगता है। अभी भी प्लेटफॉर्म को अपडेट करने की इच्छा है ताकि बोलने के लिए पूरे एप्लिकेशन को दोबारा शुरू करने की आवश्यकता न हो (उदाहरण के लिए एक बेस बेस छवि अपडेट होने के कारण 100 अलग-अलग एप्लिकेशन छवियों का पुनर्निर्माण करना चाहिए)। लेकिन शायद यह एक छवि के अंदर सबकुछ बंडल करने के डॉकर दर्शन के साथ अपरिहार्य है। - Markus Hallmann
@ वाल्को सिपुली आप प्रक्रिया को स्वचालित करने के लिए हमेशा एक स्क्रिप्ट लिख सकते हैं। - dsljanus
एपीटी-अपग्रेड, डीएनएफ अपग्रेड, पॅकमैन-एसयू, आदि कंटेनर के अंदर समकक्ष क्यों नहीं है? आप एक शेल स्क्रिप्ट भी बना सकते हैं जो ऐसा करता है और फिर एप्लिकेशन चलाता है, फिर उस कंटेनर के एंट्रीपॉइंट के रूप में उपयोग करें ताकि जब कंटेनर प्रारंभ / पुनरारंभ हो जाए तो यह अपने सभी पैकेजों को अपग्रेड कर देता है। - Arthur Kay
@ आर्थरके दो कारण: 1) आप कंटेनर आकार को उड़ाते हैं, क्योंकि अपग्रेड किए गए सभी पैकेज छवि में पुराने पैकेज को रखते हुए कंटेनर परत में जोड़े जाएंगे। 2) यह (कंटेनर) छवियों का सबसे बड़ा लाभ खो देता है: आपके द्वारा चलाई गई छवि उतनी ही नहीं है जितनी आप बिल्ड / परीक्षण करते हैं क्योंकि आप रनटाइम पर संकुल बदलते हैं। - Johannes 'fish' Ziemke
एक बात है जो मुझे समझ में नहीं आती है: यदि आप एक ऐसे सॉफ़्टवेयर का एक टुकड़ा खरीद रहे हैं जो डॉकर कंटेनर के रूप में भेज दिया जाता है, तो क्या आपको सॉफ़्टवेयर के निर्माता को प्रत्येक बार सुरक्षा समस्या आने पर एप्लिकेशन पैकेज का पुनर्निर्माण करने की प्रतीक्षा करनी होगी ? कौन सी कंपनी इस तरह से अपनी खुली भेद्यता पर नियंत्रण छोड़ देगी? - Sentenza


कंटेनरों को हल्के और अदला-बदले माना जाता है। यदि आपके कंटेनर में सुरक्षा समस्या है, तो आप उस कंटेनर के एक संस्करण का पुनर्निर्माण करते हैं जो नए कंटेनर को पैच और तैनात करता है। (कई कंटेनर एक मानक आधार छवि का उपयोग करते हैं जो मानक पैकेज प्रबंधन उपकरण का उपयोग करता है जैसे कि एपीटी-प्राप्त उनकी निर्भरताओं को स्थापित करने के लिए, पुनर्निर्माण से भंडारों से अद्यतन खींचेंगे)

जबकि आप कंटेनरों के अंदर पैच कर सकते हैं, यह अच्छी तरह से स्केल नहीं जा रहा है।


6
2017-10-03 19:44





इसे ज़िप्पर-डॉकर (1) का उपयोग करके एसयूएसई एंटरप्राइज़ लिनक्स में स्वचालित रूप से संभाला जाता है।

Suse / zypper-डोकर

डॉकर क्विक स्टार्ट


1
2018-05-08 17:05





सबसे पहले, आपके कई अपडेट जो आप पारंपरिक रूप से अतीत में भागते थे, वे कंटेनर के अंदर ही नहीं होंगे। कंटेनर को पूर्ण फ़ाइल सिस्टम का एक हल्का हल्का और छोटा सबसेट होना चाहिए जो आपके अतीत में देखने के आदी हो। आपको जिन पैकेजों को अपडेट करना होगा, वे आपके डॉकरफ़ाइल का हिस्सा होंगे, और चूंकि आपके पास डॉकरफ़ाइल है, इसलिए आप उन पैकेजों और कंटेनर आईडी का ट्रैक रखने में सक्षम होना चाहिए जिन्हें अपडेट की आवश्यकता है। क्लाउडस्टीन का यूआई जिसे जल्द ही रिलीज़ किया जाएगा, आपके लिए इन डॉकरफ़ाइल सामग्री का ट्रैक रखता है ताकि कोई भी अपडेट योजना तैयार कर सके जो उनके कंटेनर के लिए सबसे अच्छा फिट बैठता है। उम्मीद है की यह मदद करेगा


0
2017-07-08 23:23