MariaDB
 sql >> डेटाबेस >  >> RDS >> MariaDB

मारियाडीबी सर्वर को डॉकटर कंटेनर में कैसे तैनात करें

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

डॉकर क्या है?

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

कंटेनर बनाम वर्चुअल मशीन

छवि क्या है?

संबंधित संसाधन क्लस्टरकंट्रोल और डॉकर डॉकर ब्लॉग सीरीज़ पर MySQL डॉकर पर MySQL - अपने डेटाबेस को कंटेनरीकृत कैसे करें

एक छवि एक वर्चुअल मशीन टेम्पलेट की तरह है। इसमें कंटेनर चलाने के लिए सभी आवश्यक जानकारी है। इसमें ऑपरेटिंग सिस्टम, सॉफ़्टवेयर पैकेज, ड्राइवर, कॉन्फ़िगरेशन फ़ाइलें और सहायक स्क्रिप्ट शामिल हैं... सभी एक बंडल में पैक किए गए हैं।

एक डॉकर छवि कोई भी व्यक्ति बना सकता है जो एक स्क्रिप्ट लिखने की क्षमता रखता है। यही कारण है कि समुदाय द्वारा कई समान छवियां बनाई जा रही हैं, जिनमें से प्रत्येक में मामूली अंतर है...लेकिन एक सामान्य उद्देश्य की पूर्ति करता है।

डॉकर कंटेनर क्या है?

डॉकर कंटेनर डॉकर इमेज का एक उदाहरण है। यह डिफ़ॉल्ट रूप से होस्ट वातावरण से पूरी तरह से अलग-थलग चलता है, ऐसा करने के लिए कॉन्फ़िगर किए जाने पर केवल होस्ट फ़ाइलों और पोर्ट तक ही पहुँचता है।

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

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

डॉकरफाइल क्या है?

डॉकरफाइल एक स्क्रिप्ट है जिसका उपयोग डॉकर छवि बनाने के लिए किया जाता है जहां आपके पास इसे लागू करने के लिए किसी भी संशोधन के आधार पर इसे उत्पन्न करने के चरण होते हैं।

डॉकर घटक

आइए एक डॉकर फ़ाइल उदाहरण देखें।

$ vi Dockerfile
# MariaDB 10.3 with SSH
# Pull the mariadb latest image
FROM mariadb:latest
# List all the packages that we want to install
ENV PACKAGES openssh-server openssh-client
# Install Packages
RUN apt-get update && apt-get install -y $PACKAGES
# Allow SSH Root Login
RUN sed -i 's|^#PermitRootLogin.*|PermitRootLogin yes|g' /etc/ssh/sshd_config
# Configure root password
RUN echo "root:root123" | chpasswd

अब, हम इस डॉकर फ़ाइल से एक नई डॉकर छवि बना सकते हैं:

$ docker build --rm=true -t severalnines/mariadb-ssh .

बनाई गई नई छवि की जाँच करें:

$ docker images
REPOSITORY                                 TAG                 IMAGE ID            CREATED             SIZE
severalnines/mariadb-ssh                   latest              a8022951f195        17 seconds ago      485MB

और अब, हम नई छवि का उपयोग एक सामान्य डॉकर छवि के रूप में कर सकते हैं जैसा कि हम अगले भाग में देखेंगे।

डेटाबेस प्रबंधन के लिए डिवाइप्स मार्गदर्शिका जानें कि आपको अपने ओपन सोर्स डेटाबेस को स्वचालित और प्रबंधित करने के लिए क्या जानना आवश्यक है मुफ्त में डाउनलोड करें

Dockerfile के बिना Docker पर MariaDB को कैसे परिनियोजित करें

अब जब हम डॉकर दुनिया के बारे में अधिक जानते हैं, तो आइए देखें कि मारियाडीबी सर्वर बनाने के लिए इसका उपयोग कैसे करें। इसके लिए, हम मान लेंगे कि आपने पहले ही डॉकर इंस्टॉल कर लिया है।

हम Dockerfile का उपयोग करके बनाई गई छवि का उपयोग कर सकते हैं, लेकिन हम आधिकारिक MariaDB Docker Image खींचेंगे।

$ docker search mariadb
NAME                                   DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
mariadb                                MariaDB is a community-developed fork of MyS…   2804                [OK]

TAG निर्दिष्ट किए बिना, डिफ़ॉल्ट रूप से, यह नवीनतम छवि संस्करण को खींच लेगा, इस मामले में, Ubuntu 18.04 पर MariaDB सर्वर 10.3।

$ docker pull mariadb

हम डाउनलोड की गई छवि की जांच कर सकते हैं।

$ docker images
REPOSITORY                                 TAG                 IMAGE ID            CREATED             SIZE
mariadb                                    latest              e07bb20373d8        2 weeks ago         349MB

फिर, हम अपनी मारियाडीबी डॉकर निर्देशिका के तहत दो निर्देशिका बनाएंगे, एक डेटादिर के लिए और दूसरी मारियाडीबी कॉन्फ़िगरेशन फ़ाइलों के लिए। हम दोनों को अपने मारियाडीबी डॉकर कंटेनर में जोड़ देंगे।

$ cd ~/Docker
$ mkdir datadir
$ mkdir config

स्टार्टअप कॉन्फ़िगरेशन फ़ाइल /etc/mysql/my.cnf में निर्दिष्ट है, और इसमें /etc/mysql/conf.d निर्देशिका में पाई जाने वाली कोई भी फाइल शामिल है जो .cnf के साथ समाप्त होती है।

$ tail -1 /etc/mysql/my.cnf
!includedir /etc/mysql/conf.d/

इन फ़ाइलों की सामग्री /etc/mysql/my.cnf में कॉन्फ़िगर किए गए किसी भी दोहराए गए पैरामीटर को ओवरराइड कर देगी, ताकि आप यहां एक वैकल्पिक कॉन्फ़िगरेशन बना सकें।

आइए अपना पहला मारियाडीबी डॉकर कंटेनर चलाएं:

$ docker run -d --name mariadb1 \
-p 33061:3306 \
-v ~/Docker/mariadb1/config:/etc/mysql/conf.d \
-v ~/Docker/mariadb1/datadir:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=root123 \
-e MYSQL_DATABASE=dbtest \
mariadb

इसके बाद, हम अपने चल रहे कंटेनरों की जांच कर सकते हैं:

$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS              PORTS                     NAMES
12805cc2d7b5        mariadb             "docker-entrypoint.s…"   About a minute ago   Up About a minute   0.0.0.0:33061->3306/tcp   mariadb1

कंटेनर लॉग:

$ docker logs mariadb1
MySQL init process done. Ready for start up.
2019-06-03 23:18:01 0 [Note] mysqld (mysqld 10.3.15-MariaDB-1:10.3.15+maria~bionic) starting as process 1 ...
2019-06-03 23:18:01 0 [Note] InnoDB: Using Linux native AIO
2019-06-03 23:18:01 0 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
2019-06-03 23:18:01 0 [Note] InnoDB: Uses event mutexes
2019-06-03 23:18:01 0 [Note] InnoDB: Compressed tables use zlib 1.2.11
2019-06-03 23:18:01 0 [Note] InnoDB: Number of pools: 1
2019-06-03 23:18:01 0 [Note] InnoDB: Using SSE2 crc32 instructions
2019-06-03 23:18:01 0 [Note] InnoDB: Initializing buffer pool, total size = 256M, instances = 1, chunk size = 128M
2019-06-03 23:18:01 0 [Note] InnoDB: Completed initialization of buffer pool
2019-06-03 23:18:01 0 [Note] InnoDB: If the mysqld execution user is authorized, page cleaner thread priority can be changed. See the man page of setpriority().
2019-06-03 23:18:01 0 [Note] InnoDB: 128 out of 128 rollback segments are active.
2019-06-03 23:18:01 0 [Note] InnoDB: Creating shared tablespace for temporary tables
2019-06-03 23:18:01 0 [Note] InnoDB: Setting file './ibtmp1' size to 12 MB. Physically writing the file full; Please wait ...
2019-06-03 23:18:02 0 [Note] InnoDB: File './ibtmp1' size is now 12 MB.
2019-06-03 23:18:02 0 [Note] InnoDB: Waiting for purge to start
2019-06-03 23:18:02 0 [Note] InnoDB: 10.3.15 started; log sequence number 1630824; transaction id 21
2019-06-03 23:18:02 0 [Note] Plugin 'FEEDBACK' is disabled.
2019-06-03 23:18:02 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool
2019-06-03 23:18:02 0 [Note] Server socket created on IP: '::'.
2019-06-03 23:18:02 0 [Note] InnoDB: Buffer pool(s) load completed at 190603 23:18:02
2019-06-03 23:18:02 0 [Note] Reading of all Master_info entries succeded
2019-06-03 23:18:02 0 [Note] Added new Master_info '' to hash table
2019-06-03 23:18:02 0 [Note] mysqld: ready for connections.
Version: '10.3.15-MariaDB-1:10.3.15+maria~bionic'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306  mariadb.org binary distribution

और हमारे डॉकर डेटादिर पथ (होस्ट) की सामग्री:

$ ls -l ~/Docker/mariadb1/datadir/
total 249664
-rw-rw----   1 sinsausti  staff     16384 Jun  3 20:18 aria_log.00000001
-rw-rw----   1 sinsausti  staff        52 Jun  3 20:18 aria_log_control
drwx------   3 sinsausti  staff        96 Jun  3 20:18 dbtest
-rw-rw----   1 sinsausti  staff       976 Jun  3 20:18 ib_buffer_pool
-rw-rw----   1 sinsausti  staff  50331648 Jun  3 20:18 ib_logfile0
-rw-rw----   1 sinsausti  staff  50331648 Jun  3 20:17 ib_logfile1
-rw-rw----   1 sinsausti  staff  12582912 Jun  3 20:18 ibdata1
-rw-rw----   1 sinsausti  staff  12582912 Jun  3 20:18 ibtmp1
-rw-rw----   1 sinsausti  staff         0 Jun  3 20:17 multi-master.info
drwx------  92 sinsausti  staff      2944 Jun  3 20:18 mysql
drwx------   3 sinsausti  staff        96 Jun  3 20:17 performance_schema
-rw-rw----   1 sinsausti  staff     24576 Jun  3 20:18 tc.log

हम निम्न कमांड चलाकर और MYSQL_ROOT_PASSWORD चर में निर्दिष्ट पासवर्ड का उपयोग करके मारियाडीबी कंटेनर तक पहुंच सकते हैं:

$ docker exec -it mariadb1 bash
[email protected]:/# mysql -p -e "SHOW DATABASES;"
Enter password:
+--------------------+
| Database           |
+--------------------+
| dbtest             |
| information_schema |
| mysql              |
| performance_schema |
+--------------------+

यहाँ हम अपना dbtest बनाया हुआ देख सकते हैं।

डॉकर कमांड

अंत में, आइए डॉकर को प्रबंधित करने के लिए कुछ उपयोगी कमांड देखें।

  • छवि खोज
    $ docker search Image_Name
  • छवि डाउनलोड
    $ docker pull Image_Name
  • स्थापित छवियों की सूची बनाएं
    $ docker images
  • कंटेनर की सूची बनाएं (ध्वज जोड़कर हम रुके हुए कंटेनर भी देख सकते हैं)
    $ docker ps -a
  • डॉकर छवि हटाएं
    $ docker rmi Image_Name
  • डॉकर कंटेनर हटाएं (कंटेनर बंद होना चाहिए)
    $ docker rm Container_Name
  • डॉकर छवि से एक कंटेनर चलाएँ (ध्वज जोड़कर हम एक कंटेनर पोर्ट को लोकलहोस्ट में मैप कर सकते हैं)
    $ docker run -d --name Container_Name -p Host_Port:Guest_Port Image_Name
  • कंटेनर बंद करें
    $ docker stop Container_Name
  • कंटेनर शुरू करें
    $ docker start Container_Name
  • कंटेनर लॉग जांचें
    $ docker logs Container_Name
  • कंटेनर जानकारी जांचें
    $ docker inspect Container_Name
  • लिंक किया गया एक कंटेनर बनाएं
    $ docker run -d --name Container_Name --link Container_Name:Image_Name Image_Name
  • लोकलहोस्ट से एक कंटेनर से कनेक्ट करें
    $ docker exec -it Container_Name bash
  • जोड़ा गया वॉल्यूम वाला एक कंटेनर बनाएं
    $ docker run -d --name Container_Name --volume=/home/docker/Container_Name/conf.d:/etc/mysql/conf.d Image_Name
  • नई छवि में परिवर्तन करने के लिए प्रतिबद्ध
    $ docker commit Container_ID Image_Name:TAG

निष्कर्ष

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

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. मारियाडीबी में डेटा डालने पर "त्रुटि 1136 (21S01):कॉलम गिनती पंक्ति 1 पर मूल्य गणना से मेल नहीं खाती" ठीक करें

  2. मारियाडीबी में पीआई () कैसे काम करता है

  3. मारियाडीबी में JSON ऐरे से तत्वों को कैसे लौटाएं?

  4. मारियाडीबी यूनियन ऑपरेटर ने समझाया

  5. मारियाडीबी JSON_TYPE () समझाया गया