निरंतर एकीकरण चिंताएं
संक्षेप में: डॉक इन डॉकर (डिंड) अच्छी तरह से संगामिति को संभालता नहीं है।
इस कारण से कि आप CI के लिए डिंड का उपयोग नहीं कर सकते हैं क्योंकि डॉकर को उस निर्देशिका के लिए विशेष रूप से उपयोग करने के लिए डिज़ाइन किया गया था जो इसे स्टोरेज (सामान्य रूप से /var/lib/docker
) के लिए उपयोग करता है । डिंड इसका सम्मान नहीं करता है क्योंकि सभी बच्चे प्रक्रियाएं इस निर्देशिका का समवर्ती उपयोग करती हैं। हर बार जब आप (उदाहरण के लिए CI से) का पुनर्निर्माण करते हैं, तो इस निर्देशिका में आपके ऐप से संबंधित कुछ भी मिटाया जा सकता है और इसे शून्य से शुरू करने के लिए मजबूर किया जा सकता है। आपके उपयोगकर्ता इसे कैसे पसंद करेंगे यदि उन्होंने अपने भुगतान विवरण दर्ज किए, "खरीद" पर क्लिक किया, और अचानक खुद को लॉगिन स्क्रीन पर वापस पाया जैसे कि उन्होंने कभी कुछ नहीं किया? यह सिर्फ अच्छा UX नहीं है। एक ही बार में दो रेकॉर्ड्स होते हैं? यह वास्तव में सभी के लिए बुरी तरह से समाप्त होने वाला है (आपकी डेटा अखंडता सहित)।
अन्य चिंताएँ
ओपी द्वारा पोस्ट किए गए लिंक से, सुरक्षा संबंधी चिंताएं उत्पन्न होती हैं क्योंकि सिस्टम बहुत ही "सीएसएस-जैसे" फैशन में सुरक्षा नीतियों को लागू करने की कोशिश करेगा जहां एक निचले कंटेनर में बाहरी कंटेनर के संसाधनों तक पहुंच हो सकती है जब तक कि स्पष्ट रूप से निषिद्ध न हो। याद रखें जब आप "mywebsite.com/../another_folder/pStreet_resource.tk" जैसे कुछ करके वेब सर्वर संसाधनों तक पहुंच सकते हैं? इसके अलावा, कभी-कभी फाइल सिस्टम केवल एक-दूसरे के साथ अच्छा नहीं खेलते हैं जब वे इस तरह से नेस्टेड होते हैं।
जोड़
शुक्र है, ओपी में ब्लॉग पोस्ट के पास मुद्दे का एक अच्छा समाधान है। जब तक आपकी आवश्यकताओं को "CI / Docker पर चल रहे आपके सिस्टम से डॉक कंटेनर" बिल्ड / रन / पुश द्वारा पूरा नहीं किया जाता है, तब तक आप Docker सॉकेट (आमतौर पर) पर -v
मोड का उपयोग कर सकते हैं (आमतौर पर /var/run/docker.sock:/var/run/docker.sock
) आपको "साझा" डेटा वॉल्यूम तक पहुंचने की आवश्यकता है। इन कंटेनरों को माता-पिता के साथ, समकालिक IO के लिए मजबूर करने के बजाय शुरू किया जाएगा। अब आपके पास एक ही चीज़ (लगभग) डिंड के रूप में है, लेकिन बिना डाउंस के जो डॉकर के साथ आते हैं, वह कंसीडर के लिए नहीं बन रहे हैं।
संदर्भ (ओपी से): अपने CI या परीक्षण वातावरण के लिए Docker-in-Docker का उपयोग करना? दो बार सोचो।