एक डॉकर छवि कोई भी व्यक्ति बना सकता है जो एक स्क्रिप्ट लिखने की क्षमता रखता है। यही कारण है कि समुदाय द्वारा कई समान छवियां बनाई जा रही हैं, जिनमें मामूली अंतर है लेकिन वास्तव में एक सामान्य उद्देश्य की सेवा है। एक अच्छी (और लोकप्रिय) कंटेनर छवि में स्पष्ट स्पष्टीकरण, सक्रिय रूप से बनाए रखा भंडार और नियमित अपडेट के साथ अच्छी तरह से लिखित दस्तावेज होना चाहिए। यदि आप MySQL के लिए अपनी खुद की डॉकर छवि बनाना और प्रकाशित करना सीखना चाहते हैं, तो इस ब्लॉग पोस्ट को देखें, या यदि आप डॉकर पर MySQL चलाने की मूल बातें सीखना चाहते हैं तो यह ब्लॉग पोस्ट।
इस ब्लॉग पोस्ट में, हम अपने MySQL या MariaDB सर्वर को चलाने के लिए कुछ सबसे लोकप्रिय डॉकर छवियों को देखने जा रहे हैं। हमारे द्वारा चुनी गई छवियां सामान्य प्रयोजन वाली सार्वजनिक छवियां हैं जो कम से कम एक MySQL सेवा चला सकती हैं। उनमें से कुछ में गैर-आवश्यक MySQL-संबंधित अनुप्रयोग शामिल हैं, जबकि अन्य केवल एक सादे mysqld उदाहरण के रूप में कार्य करते हैं। यहां की सूची कंटेनर छवियों के लिए दुनिया के सबसे बड़े पुस्तकालय और समुदाय डॉकर हब के परिणाम पर आधारित है।
TLDR
निम्न तालिका विभिन्न विकल्पों को सारांशित करती है:
पहलू | MySQL (डॉकर) | मारियाडीबी (डॉकर) | पेरकोना (डॉकर) | MySQL (ओरेकल) | MySQL/MariaDB (CentOS) | मारियाडीबी (बिटनामी) |
---|---|---|---|---|---|---|
डाउनलोड | 10M+ | 10M+ | 10M+ | 10M+ | 10M+ | 10M+ |
डॉकर हब | mysql | मारीडब | percona | mysql/mysql-server | mysql-80-centos7 mysql-57-centos7 mysql-56-centos7 mysql-55-centos7 mariadb-102-centos7 मारियाडीबी-101-सेंटोस7 | bitnami/mariadb |
प्रोजेक्ट पेज | mysql | मारीडब | percona-docker | mysql-docker | mysql-container | bitnami-docker-mariadb |
आधार छवि | डेबियन 9 | उबंटू 18.04 (बायोनिक) उबंटू 14.04 (भरोसेमंद) | CentOS 7 | Oracle Linux 7 | RHEL 7 CentOS 7 | डेबियन 9 (मिनीडेब) Oracle Linux 7 |
समर्थित डेटाबेस संस्करण | 5.5 5.6 5.7 8.0 | 5.5 10.0 10.1 10.2 10.3 10.4 | 5.6 5.7 8.0 | 5.5 5.6 5.7 8.0 | 5.5 5.6 5.7 8.0 10.1 10.2 | 10.1 10.2 10.3 |
समर्थित प्लेटफॉर्म | x86_64 | x86 x86_64 arm64v8 ppc64le | x86 x86_64 | x86_64 | x86_64 | x86_64 |
छवि का आकार (टैग:नवीनतम) | 129 एमबी | 120 एमबी | 193 MB | 99 एमबी | 178 एमबी | 87 एमबी |
पहली प्रतिबद्धता | 18 मई 2014 | 16 नवंबर, 2014 | जनवरी 3, 2016 | 18 मई 2014 | फ़रवरी 15, 2015 | 17 मई, 2015 |
योगदानकर्ता | 18 | 9 | 15 | 14 | 30 | 20 |
गीथब स्टार | 1267 | 292 | 113 | 320 | 89 | 152 |
Github Fork | 1291 | 245 | 121 | 1291** | 146 | 71 |
डॉकर हब पेज से लिया गया।
MySQL डॉकर प्रोजेक्ट से फोर्क किया गया।
mysql (डॉकर)
छवियों का निर्माण और रखरखाव डॉकर समुदाय द्वारा MySQL टीम की मदद से किया जाता है। इसे सबसे लोकप्रिय सार्वजनिक रूप से उपलब्ध MySQL सर्वर छवियों को डॉकर हब पर होस्ट किया जा सकता है और बाजार में सबसे पहले में से एक माना जा सकता है (पहली प्रतिबद्धता 18 मई, 2014 थी)। 18 सक्रिय योगदानकर्ताओं के साथ इसे ~1300 बार फोर्क किया गया है। यह सबसे अच्छे प्रयास के आधार पर डॉकर संस्करण को 1.6 तक समर्थन करता है। इस लेखन के समय, MySQL के सभी प्रमुख संस्करण समर्थित हैं - 5.5, 5.6, 5.7 और 8.0 केवल x86_64 आर्किटेक्चर पर।
अन्य लोगों द्वारा निर्मित अधिकांश MySQL छवियां इस छवि के निर्माण के तरीके से प्रेरित हैं। मारियाडीबी, पेरकोना और माईएसक्यूएल सर्वर (ओरेकल) छवियां एक समान पर्यावरण चर, कॉन्फ़िगरेशन फ़ाइल संरचना और कंटेनर आरंभीकरण प्रक्रिया प्रवाह का अनुसरण कर रही हैं।
डॉकर हब पर अधिकांश MySQL कंटेनर छवियों पर निम्नलिखित पर्यावरण चर उपलब्ध हैं:
- MYSQL_ROOT_PASSWORD
- MYSQL_DATABASE
- MYSQL_USER
- MYSQL_PASSWORD
- MYSQL_ALLOW_EMPTY_PASSWORD
- MYSQL_RANDOM_ROOT_PASSWORD
- MYSQL_ONETIME_PASSWORD
छवि का आकार (टैग:नवीनतम) औसत रूप से छोटा (129MB) है, उपयोग में आसान, अच्छी तरह से रखरखाव और अनुरक्षक द्वारा नियमित रूप से अद्यतन किया जाता है। यदि आपके एप्लिकेशन को नवीनतम MySQL डेटाबेस कंटेनर की आवश्यकता है, तो यह सबसे अनुशंसित सार्वजनिक छवि है जिसका आप उपयोग कर सकते हैं।
मारियाडब (डॉकर)
छवियों को डॉकर समुदाय द्वारा मारियाडीबी टीम की मदद से बनाए रखा जाता है। यह निर्माण संरचना की उसी शैली का उपयोग करता है जैसे कि mysql (Docker) छवि, लेकिन यह कई आर्किटेक्चर समर्थन के साथ आती है:
- लिनक्स x86-64 (amd64)
- ARMv8 64-बिट (arm64v8)
- x86/i686 (i386)
- IBM POWER8 (ppc64le)
इस लेखन के समय, चित्र 10.4 तक मारियाडीबी संस्करण 5.5 का समर्थन करते हैं, जहां "नवीनतम" टैग आकार वाली छवि लगभग 120 एमबी है। यह छवि एक सामान्य-उद्देश्य वाली छवि के रूप में कार्य करती है और निर्देशों, पर्यावरण चर और कॉन्फ़िगरेशन फ़ाइल संरचना को mysql (Docker) के रूप में अनुसरण करती है। डेटाबेस बैकएंड के रूप में MySQL की आवश्यकता वाले अधिकांश एप्लिकेशन आमतौर पर मारियाडीबी के साथ संगत होते हैं, क्योंकि दोनों एक ही प्रोटोकॉल पर बात कर रहे हैं।
MariaDB सर्वर MySQL का एक कांटा हुआ करता था लेकिन अब इसे इससे दूर कर दिया गया है। डेटाबेस आर्किटेक्चर डिज़ाइन के संदर्भ में, कुछ मारियाडीबी संस्करण 100% संगत नहीं हैं और अब उनके संबंधित MySQL संस्करणों के साथ ड्रॉप-इन प्रतिस्थापन नहीं हैं। विवरण के लिए इस पृष्ठ को देखें। हालाँकि, तार्किक बैकअप का उपयोग करके एक दूसरे के बीच माइग्रेट करने के तरीके हैं। सीधे शब्दों में कहें, कि एक बार जब आप मारियाडीबी पारिस्थितिकी तंत्र में होते हैं, तो आपको शायद इसके साथ रहना होगा। एक क्लस्टर में मारियाडीबी और माईएसक्यूएल के बीच मिश्रण या स्विच करने की अनुशंसा नहीं की जाती है।
यदि आप एक अधिक उन्नत मारियाडीबी सेटअप (प्रतिकृति, गैलेरा, शार्डिंग) स्थापित करना चाहते हैं, तो उस उद्देश्य को और अधिक आसानी से प्राप्त करने के लिए अन्य छवियां बनाई गई हैं, उदाहरण के लिए, बिटनामी/मारियाडब जैसा कि आगे बताया गया है।
पेरकोना (डॉकर)
Percona Server, Percona द्वारा बनाया गया MySQL का एक कांटा है। ये एकमात्र आधिकारिक पेरकोना सर्वर डॉकर छवियां हैं, जिन्हें पेरकोना टीम द्वारा बनाया और बनाए रखा गया है। यह x86 और x86_64 आर्किटेक्चर दोनों का समर्थन करता है और छवि CentOS 7 पर आधारित है। Percona केवल कंटेनर छवियों के लिए नवीनतम 3 प्रमुख MySQL संस्करणों को बनाए रखता है - 5.6, 5.7 और 8.0।
कोड भंडार बताता है कि पहली प्रतिबद्धता 3 जनवरी, 2016 थी जिसमें 15 सक्रिय रूप से योगदानकर्ता ज्यादातर पेरकोना विकास दल से थे। MySQL के लिए Percona सर्वर XtraDB स्टोरेज इंजन (InnoDB के लिए एक ड्रॉप-इन रिप्लेसमेंट) के साथ आता है और MyRocks स्टोरेज इंजन, TokuDB और साथ ही Percona जैसी कुछ अतिरिक्त सुविधाओं के साथ अपस्ट्रीम Oracle MySQL रिलीज़ का बहुत बारीकी से अनुसरण करता है (इसमें सभी बग फिक्स सहित) खुद के बग फिक्स। एक तरह से, आप इसे Oracle के MySQL के उन्नत संस्करण के रूप में सोच सकते हैं। आप आसानी से MySQL और Percona सर्वर छवियों के बीच स्विच कर सकते हैं, बशर्ते आप संगत संस्करण पर चल रहे हों।
छवियां TokuDB और MySQL के लिए RocksDB के लिए दो अतिरिक्त पर्यावरण चर की पहचान करती हैं (v5.6 के बाद से उपलब्ध):
- INIT_TOKUDB - सक्षम TOKUDB संग्रहण इंजन के साथ कंटेनर को प्रारंभ करने की अनुमति देने के लिए 1 पर सेट करें।
- INIT_ROCKSDB - सक्षम ROCKSDB स्टोरेज इंजन के साथ कंटेनर को शुरू करने की अनुमति देने के लिए 1 पर सेट करें।
mysql-server (Oracle)
डॉकर टीम द्वारा mysql से रिपॉजिटरी को फोर्क किया गया है। छवियों को Oracle Linux 7 बेस इमेज के शीर्ष पर निर्मित Oracle में MySQL टीम द्वारा बनाया, बनाए रखा और समर्थित किया गया है। MySQL 8.0 छवि MySQL कम्युनिटी सर्वर (न्यूनतम) और MySQL शेल के साथ आती है और सर्वर को न्यूनतम रिपॉजिटरी से पोर्ट 33060 पर एक्स प्रोटोकॉल को उजागर करने के लिए कॉन्फ़िगर किया गया है। न्यूनतम पैकेज MySQL के लिए आधिकारिक डॉकर छवियों द्वारा उपयोग के लिए डिज़ाइन किया गया था। यह MySQL के कुछ गैर-आवश्यक टुकड़ों को काट देता है जैसे innochecksum, myisampack, mysql_plugin, लेकिन अन्यथा एक ही उत्पाद है। इसलिए, इसमें बहुत छोटा छवि पदचिह्न है जो लगभग 99 एमबी है।
ध्यान देने योग्य एक महत्वपूर्ण बात यह है कि छवियों में एक अंतर्निहित स्वास्थ्य जांच स्क्रिप्ट होती है, जो कुछ लोगों के लिए बहुत उपयोगी होती है जिन्हें सटीक उपलब्धता तर्क की आवश्यकता होती है। अन्यथा, लोगों को कंटेनर के स्वास्थ्य की जांच करने के लिए एक कस्टम डॉकर का HEALTHCHECK कमांड (या स्क्रिप्ट) लिखना होगा।
mysql-xx-centos7 और mariadb-xx-centos7 (CentOS)
कंटेनर छवियों का निर्माण और रखरखाव CentOS टीम द्वारा किया जाता है जिसमें OpenShift और सामान्य उपयोग के लिए MySQL डेटाबेस सर्वर शामिल होता है। आरएचईएल आधारित छवियों के लिए, आप उन्हें Red Hat के कंटेनर कैटलॉग से खींच सकते हैं, जबकि CentOS आधारित छवियों को हर प्रमुख संस्करण के लिए अलग-अलग पृष्ठों पर डॉकर हब में सार्वजनिक रूप से होस्ट किया जाता है (केवल 10M+ डाउनलोड वाली छवियों को सूचीबद्ध करें):
- MySQL 8.0:https://hub.docker.com/r/centos/mysql-80-centos7
- MySQL 5.7:https://hub.docker.com/r/centos/mysql-57-centos7
- MySQL 5.6:https://hub.docker.com/r/centos/mysql-56-centos7
- MySQL 5.5:https://hub.docker.com/r/centos/mysql-55-centos7
- मारियाडीबी 10.2:https://hub.docker.com/r/centos/mariadb-102-centos7
- मारियाडीबी 10.1:https://hub.docker.com/r/centos/mariadb-101-centos7
छवि संरचना थोड़ी अलग है और यह दूसरों की तरह छवि टैग का उपयोग नहीं करती है, इस प्रकार छवि का नाम थोड़ा लंबा हो जाता है। ऐसा कहने के बाद, आप जिस प्रमुख संस्करण को खींचना चाहते हैं उसे प्राप्त करने के लिए आपको सही डॉकर हब पृष्ठ पर जाना होगा।
कोड रिपॉजिटरी पेज के अनुसार, 15 फरवरी, 2015 से 30 योगदानकर्ताओं ने परियोजना में सहयोग किया है। यह MySQL 5.5 को 8.0 तक और मारियाडीबी 5.5 को 10.2 तक x86_64 आर्किटेक्चर के लिए समर्थन करता है। यदि आप OpenShift जैसे Red Hat कंटेनरीकरण बुनियादी ढांचे पर बहुत अधिक भरोसा करते हैं, तो ये संभवतः MySQL और MariaDB के लिए सबसे लोकप्रिय या अच्छी तरह से बनाए रखा चित्र हैं।
निम्नलिखित पर्यावरण चर MySQL/MariaDB कॉन्फ़िगरेशन फ़ाइल को प्रभावित करते हैं और वे सभी वैकल्पिक हैं:
- MYSQL_LOWER_CASE_TABLE_NAMES (डिफ़ॉल्ट:0)
- MYSQL_MAX_CONNECTIONS (डिफ़ॉल्ट:151)
- MYSQL_MAX_ALLOWED_PACKET (डिफ़ॉल्ट:200M)
- MYSQL_FT_MIN_WORD_LEN (डिफ़ॉल्ट:4)
- MYSQL_FT_MAX_WORD_LEN (डिफ़ॉल्ट:20)
- MYSQL_AIO (डिफ़ॉल्ट:1)
- MYSQL_TABLE_OPEN_CACHE (डिफ़ॉल्ट:400)
- MYSQL_KEY_BUFFER_SIZE (डिफ़ॉल्ट:32M या उपलब्ध मेमोरी का 10%)
- MYSQL_SORT_BUFFER_SIZE (डिफ़ॉल्ट:256K)
- MYSQL_READ_BUFFER_SIZE (डिफ़ॉल्ट:8M या उपलब्ध मेमोरी का 5%)
- MYSQL_INNODB_BUFFER_POOL_SIZE (डिफ़ॉल्ट:32M या उपलब्ध मेमोरी का 50%)
- MYSQL_INNODB_LOG_FILE_SIZE (डिफ़ॉल्ट:8M या उपलब्ध मेमोरी का 15%)
- MYSQL_INNODB_LOG_BUFFER_SIZE (डिफ़ॉल्ट:8M या उपलब्ध मेमोरी का 15%)
- MYSQL_DEFAULTS_FILE (डिफ़ॉल्ट:/etc/my.cnf)
- MYSQL_BINLOG_FORMAT (डिफ़ॉल्ट:स्टेटमेंट)
- MYSQL_LOG_QUERIES_ENABLED (डिफ़ॉल्ट:0)
जब MySQL इमेज --memory पैरामीटर सेट के साथ चल रही हो तो इमेज MySQL ऑटो-ट्यूनिंग का समर्थन करती हैं और यदि आपने निम्न पैरामीटर के लिए मान निर्दिष्ट नहीं किया है, तो उपलब्ध मेमोरी के आधार पर उनके मानों की स्वचालित रूप से गणना की जाएगी:
- MYSQL_KEY_BUFFER_SIZE (डिफ़ॉल्ट:10%)
- MYSQL_READ_BUFFER_SIZE (डिफ़ॉल्ट:5%)
- MYSQL_INNODB_BUFFER_POOL_SIZE (डिफ़ॉल्ट:50%)
- MYSQL_INNODB_LOG_FILE_SIZE (डिफ़ॉल्ट:15%)
- MYSQL_INNODB_LOG_BUFFER_SIZE (डिफ़ॉल्ट:15%)
बिटनामी/मारीडब
छवियों का निर्माण और रखरखाव बिटनामी द्वारा किया जाता है, जो वर्चुअल या क्लाउड परिनियोजन में सॉफ़्टवेयर पैकेजिंग के विशेषज्ञ हैं। छवियों को उपलब्ध नवीनतम वितरण पैकेजों के साथ दैनिक रूप से जारी किया जाता है और मिनिडेब नामक एक न्यूनतम डेबियन-आधारित छवि का उपयोग करता है। इस प्रकार, नवीनतम टैग के लिए छवि का आकार सबसे छोटा है जो लगभग 87MB है। 17 मई, 2015 को पहली प्रतिबद्धता के साथ इस परियोजना में 20 योगदानकर्ता हैं। लेखन के इस समय, यह केवल 10.3 तक मारियाडीबी 10.1 का समर्थन करता है।
इस छवि की एक उत्कृष्ट विशेषता डॉकर पर्यावरण चर के माध्यम से अत्यधिक उपलब्ध मारियाडीबी सेटअप को तैनात करने की क्षमता है। एक शून्य डाउनटाइम मारियाडीबी मास्टर-स्लेव प्रतिकृति क्लस्टर को निम्न पर्यावरण चर का उपयोग करके बिटनामी मारियाडीबी डॉकर छवि के साथ आसानी से सेटअप किया जा सकता है:
- MARIADB_REPLICATION_MODE:प्रतिकृति मोड। संभावित मूल्य मास्टर/गुलाम। कोई डिफ़ॉल्ट नहीं।
- MARIADB_REPLICATION_USER:पहली बार चलाने पर मास्टर पर बनाया गया प्रतिकृति उपयोगकर्ता। कोई डिफ़ॉल्ट नहीं।
- MARIADB_REPLICATION_PASSWORD:प्रतिकृति उपयोगकर्ता पासवर्ड। कोई डिफ़ॉल्ट नहीं।
- MARIADB_MASTER_HOST:प्रतिकृति मास्टर (दास पैरामीटर) का होस्टनाम/आईपी। कोई डिफ़ॉल्ट नहीं।
- MARIADB_MASTER_PORT_NUMBER:प्रतिकृति मास्टर का सर्वर पोर्ट (दास पैरामीटर)। 3306 के लिए डिफ़ॉल्ट।
- MARIADB_MASTER_ROOT_USER:प्रतिकृति मास्टर पर उपयोगकर्ता MARIADB_DATABASE (दास पैरामीटर) तक पहुंच के साथ। रूट करने के लिए डिफ़ॉल्ट
- MARIADB_MASTER_ROOT_PASSWORD:प्रतिकृति मास्टर पर उपयोगकर्ता का पासवर्ड जिसके पास पहुंच है
- MARIADB_DATABASE (दास पैरामीटर)। कोई डिफ़ॉल्ट नहीं।
प्रतिकृति क्लस्टर में, आपके पास एक मास्टर और शून्य या अधिक दास हो सकते हैं। जब प्रतिकृति सक्षम होती है तो मास्टर नोड रीड-राइट मोड में होता है, जबकि दास केवल-पढ़ने के लिए मोड में होते हैं। सर्वोत्तम प्रदर्शन के लिए यह सलाह दी जाती है कि रीड को दासों तक सीमित रखें।
इसके अलावा, ये छवियां कुबेरनेट्स पर हेल्म चार्ट के रूप में परिनियोजन का भी समर्थन करती हैं। आप बिटनामी मारियाडीबी चार्ट गिटहब रिपॉजिटरी में इंस्टॉलेशन चरणों के बारे में अधिक पढ़ सकते हैं।
निष्कर्ष
कई MySQL सर्वर छवियां हैं जो समुदाय द्वारा योगदान की गई हैं और हम उन सभी को यहां कवर नहीं कर सकते हैं। ध्यान रखें कि ये चित्र लोकप्रिय हैं क्योंकि इन्हें सामान्य प्रयोजन के उपयोग के लिए बनाया गया है। कुछ कम लोकप्रिय छवियां अधिक उन्नत सामग्री कर सकती हैं, जैसे डेटाबेस कंटेनर ऑर्केस्ट्रेशन, स्वचालित बूटस्ट्रैपिंग और स्वचालित स्केलिंग। अलग-अलग छवियां अलग-अलग दृष्टिकोण प्रदान करती हैं जिनका उपयोग अन्य समस्याओं के समाधान के लिए किया जा सकता है।