जब लोग डॉकर में एक डेटाबेस चलाने के बारे में बात करते हैं, तो वे डेटा को कंटेनर में संग्रहीत करने के लिए नहीं होते हैं; वे डीबी सॉफ्टवेयर के साथ एक डॉकटर छवि होने के बारे में बात कर रहे हैं, और डेटा को वॉल्यूम के रूप में माउंट कर रहे हैं (एक बांध की मात्रा, कंटेनर की मात्रा नहीं)।
Docker में वॉल्यूम एक आवश्यक हिस्सा हैं, और कुछ ऐसा नहीं है जो परतदार हो या सिर्फ उससे निपटा हो। डॉकर सिर्फ स्टेटलेस (माइक्रो) सेवाओं के लिए नहीं बना है।
मेरी इच्छा के अनुसार, मुझे डॉकटर में डेटाबेस न चलाने का कोई तकनीकी कारण नहीं मिल रहा है , इसलिए दुर्भाग्य से मैं तर्क के दूसरे पक्ष को चुनूँगा और इसलिए शायद आपको वह उत्तर न मिले जो आप खोज रहे हैं।
(मैं एक उदाहरण के रूप में ओरेकल का उपयोग कर रहा हूं क्योंकि मैं इसके साथ परिचित हूं, दोनों नंगे धातु और डॉकटराइज़्ड हैं, और क्योंकि यह पिछले कुख्यात सेटिंग्स में जाने के लिए संचालित करने के लिए सिर्फ थोड़ा गैर-तुच्छ होने के लिए काफी कुख्यात जानवर है।)
- एक कंटेनर में स्वयं DB सॉफ्टवेयर की पैकेजिंग आपको सामान्य लाभ प्रदान करती है - हर जगह एक ही संस्करण होना, निर्भरता / साझा पुस्तकालय मुद्दों से बचना, डेवलपर लैपटॉप पर या जहाँ भी आपको आवश्यकता होती है, ठीक उसी DB को स्पिन करने में सक्षम होना।
- यह कहीं भी चलने के लिए एक स्नैप हो रहा है; अद्यतन तुच्छ है, और इसी तरह। सभी डॉकटर लाभ लागू होते हैं। डॉकरहब पर एक ओरेकल छवि है जो आपको एक या तीन मिनट (और साथ ही दूसरों के लिए) निश्चित रूप से एक काम कर रहे डीबी को स्पिन करने की अनुमति देती है।
- लोगों ने प्रदर्शन परीक्षण किया और वॉल्यूम और नंगे धातु के बीच कोई I / O अंतर नहीं पाया ( https://www.percona.com/blog/2016/02/11/measuring-docker-io-overhead/ , https: // stackoverflow .com / questions / 21889053 / what-is-the-runtime-performance-cost-of-a-docker-container )।
- हुड के तहत, यह डॉकटर की तरह किसी भी तरह सभी I / O को स्वीकार नहीं करता है। यह सिर्फ मानक लिनक्स उपकरणों के साथ रचनात्मक हो जाता है (इस मामले में mounts बाँधता है, आंतरिक कर्नेल तालिकाओं का प्रबंधन करता है जो डॉक-फू को संभव बनाता है)।
- जाहिर है कि इसका मतलब यह नहीं है कि आप डीबी के दो उदाहरण चला सकते हैं और बस उन्हें एक ही फाइल पर काम करना है, लेकिन कोई भी इसे लागू नहीं कर रहा है। डॉकर आपको वॉल्यूम के साथ-साथ स्वचालित और जादुई रूप से रेस-फ्री एक्सेस नहीं देता है, और कभी भी ऐसा करने का दिखावा नहीं करता है। बाकी लाभ अभी भी लागू होते हैं। यदि आपका डीबी स्वयं इस तरह के संघर्षों का पता नहीं लगाता है, तो आप उस छवि को बेहतर तरीके से एक सीएमडी स्क्रिप्ट की आपूर्ति करते हैं जो वॉल्यूम के पहले से ही उपयोग में होने पर एक दूसरे कंटेनर को स्पिन करने से मना कर देता है।
- आपको कंटेनर को बंद करने / बंद करने में थोड़ा अधिक सावधान रहना होगा (जैसे आप बस एक नंगे धातु डीबी सर्वर को बंद नहीं करेंगे), लेकिन यह काफी प्रबंधनीय होना चाहिए।
अब, परिस्थितियों के आधार पर, ऐसा न करने के नरम कारण हो सकते हैं:
- उदाहरण के लिए, ओरेकल (कंपनी), निश्चित रूप से आपका समर्थन नहीं करेगा यदि आप डॉकटर कंटेनर में अपना आरडीबीएमएस चलाते हैं। लेकिन हो सकता है कि आप केवल अपने डेवलपर्स और परीक्षण के माहौल के लिए dockerized Oracle RDBMS छवियों का उपयोग कर रहे हों, जहां आपको किसी भी मामले में उनके समर्थन की आवश्यकता नहीं होगी, इसे नंगे धातु उत्पादन सर्वर के लिए संग्रहित करना होगा। (लेकिन अपने लाइसेंस का भुगतान करना न भूलें ...)।
- यदि ऑप्स लोग डॉकर के साथ अपरिचित हैं, तो यह शायद थोड़ा आसान हो सकता है कि गलती से सब कुछ मार दें, अपने डेटा फ़ाइलों आदि को नष्ट कर दें।
- यदि आपके पास पहले से ही बड़ी समर्पित धातु डीबी मशीनें हैं, तो बड़ी मात्रा में बहुत तेजी से समर्पित सैन स्टोरेज के साथ, और कुछ भी और कुछ भी नहीं चल रहा है, तो डॉकटर का उपयोग करने का कोई मतलब नहीं होगा , क्योंकि आप कभी भी किसी अन्य सर्वर को स्पिन नहीं करेंगे। 100 जीबी या डेटा के टीबी भी हैं। आखिरकार, उत्पादन के लिए, ओरेकल जैसा एक आरडीबीएमएस बहुत प्रतिकृति, डेटा पूर्णांक, नो-डाउनटाइम फेलओवर, आदि पहलुओं में बहुत उन्नत है। ध्यान दें कि यह तर्क सिर्फ यह कहता है "आपको अपने RDBMS को कंटेनरीकृत करने की आवश्यकता नहीं है "। यह नहीं कहता है "आपको यह नहीं करना चाहिए " - शायद आप इसे करना चाहते हैं क्योंकि आप कंटेनरों के माध्यम से डेटाबेस सॉफ़्टवेयर अपग्रेड को रोल करना चाहते हैं या जो भी अन्य कारण आप कल्पना कर सकते हैं।
तो यह तूम गए वहाँ। हर तरह से करते हैं , तो आपके डीबी dockerize अपने डेवलपर्स (जो सदा आभारी होंगे) और अपने परीक्षण के वातावरण के लिए कम से कम। उत्पादन पर, यह स्वाद के लिए नीचे आ जाएगा, और वहां कम से कम, मैं उस समाधान को भी पसंद करूंगा जो विशेष डीबीए / ऑप्स के साथ सबसे अच्छा बैठता है - अगर उनके पास नंगे धातु डीबी सर्वरों के काम करने का दशकों का अनुभव है, तो हर तरह से उन पर भरोसा करें। ऐसा जारी रखने के लिए। लेकिन अगर आप एक स्टार्टअप हैं, जिसमें क्लाउड वैसे भी सभी आईटी हैं, तो पूरी तस्वीर में डॉकटर कंटेनर सिर्फ एक प्याज का टुकड़ा होगा।