एक डेडिकेटेड सर्वर पर अपने एप्लिकेशन को डॉकराइज़ करना: एक स्टेप-बाय-स्टेप गाइड

एक डेडिकेटेड सर्वर पर अपने एप्लिकेशन को डॉकराइज़ करना: एक स्टेप-बाय-स्टेप गाइड

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

41 min read

परिचय

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

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

चाहे आप एक डेवलपर हों जो अपने वर्कफ़्लो को सुव्यवस्थित करना चाहते हैं या एक सिस्टम प्रशासक हों जो सर्वर संसाधनों को अनुकूलित करना चाहते हों, यह गाइड आपको TildaVPS डेडिकेटेड सर्वर पर डॉकर को सफलतापूर्वक लागू करने के लिए आवश्यक ज्ञान और व्यावहारिक कदम प्रदान करेगा।

अनुभाग 1: डॉकर और इसके लाभों को समझना

डॉकर क्या है?

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

स्पष्टीकरण: डॉकर कंटेनरों को सॉफ़्टवेयर के लिए मानकीकृत शिपिंग कंटेनर के रूप में सोचें। जैसे शिपिंग कंटेनरों ने सामग्री की परवाह किए बिना माल के परिवहन के लिए एक मानक तरीका प्रदान करके वैश्विक व्यापार में क्रांति ला दी, वैसे ही डॉकर कंटेनर एप्लिकेशन और उनकी निर्भरताओं को स्व-पर्याप्त इकाइयों में पैकेज करके सॉफ़्टवेयर डिप्लॉयमेंट को मानकीकृत करते हैं जो कहीं भी चल सकते हैं।

तकनीकी विवरण: डॉकर कई प्रमुख घटकों के साथ एक क्लाइंट-सर्वर आर्किटेक्चर का उपयोग करता है:

  • डॉकर डेमन (dockerd): डॉकर कंटेनरों का प्रबंधन करने वाली स्थायी प्रक्रिया
  • डॉकर क्लाइंट: डॉकर के साथ इंटरैक्ट करने के लिए उपयोग किया जाने वाला कमांड-लाइन इंटरफ़ेस
  • डॉकर इमेज: कंटेनर बनाने के लिए उपयोग किए जाने वाले रीड-ओनली टेम्पलेट्स
  • डॉकर कंटेनर: डॉकर इमेज के चलने योग्य इंस्टेंस
  • डॉकर रजिस्ट्री: डॉकर इमेज को स्टोर और वितरित करने के लिए एक रिपॉजिटरी

एप्लिकेशन को डॉकराइज़ करने के लाभ

एक डेडिकेटेड सर्वर पर अपने एप्लिकेशन को डॉकराइज़ करने से कई फायदे मिलते हैं:

  1. वातावरणों में निरंतरता: डॉकर यह सुनिश्चित करता है कि आपका एप्लिकेशन डेवलपमेंट, टेस्टिंग और प्रोडक्शन वातावरण में एक ही तरीके से चले, जिससे "यह मेरी मशीन पर काम करता है" की समस्या समाप्त हो जाती है।

  2. पृथक्करण और सुरक्षा: प्रत्येक कंटेनर अलग से चलता है, जिससे एप्लिकेशन के बीच विरोध रोका जा सकता है और एक अतिरिक्त सुरक्षा परत प्रदान की जा सकती है।

  3. संसाधन दक्षता: कंटेनर होस्ट ओएस कर्नेल को साझा करते हैं और पारंपरिक वर्चुअल मशीनों की तुलना में संसाधनों का अधिक कुशलता से उपयोग करते हैं, जिससे आप एक ही हार्डवेयर पर अधिक एप्लिकेशन चला सकते हैं।

  4. तेज़ डिप्लॉयमेंट: डॉकर त्वरित एप्लिकेशन डिप्लॉयमेंट और स्केलिंग को सक्षम बनाता है, कंटेनर कुछ सेकंड में शुरू हो जाते हैं, न कि मिनटों में।

  5. वर्जन कंट्रोल और कंपोनेंट रियूज: डॉकर इमेज को वर्जन किया जा सकता है, जिससे आप परिवर्तनों को ट्रैक कर सकते हैं और यदि आवश्यक हो तो वापस रोल कर सकते हैं। कंपोनेंट को विभिन्न परियोजनाओं में पुन: उपयोग किया जा सकता है।

  6. सरल अपडेट और रोलबैक: एप्लिकेशन को अपडेट करना एक नई इमेज खींचने और कंटेनर को पुनरारंभ करने जितना आसान हो जाता है। यदि समस्याएँ उत्पन्न होती हैं, तो आप पिछली इमेज पर तुरंत वापस लौट सकते हैं।

  7. माइक्रोसर्विस आर्किटेक्चर सपोर्ट: डॉकर माइक्रोसर्विस आर्किटेक्चर के कार्यान्वयन की सुविधा प्रदान करता है, जिससे आप जटिल एप्लिकेशन को छोटे, प्रबंधनीय सेवाओं में तोड़ सकते हैं।

दृश्य तत्व: [छवि: पारंपरिक डिप्लॉयमेंट बनाम डॉकर कंटेनराइज़ेशन की तुलना करने वाला आरेख, जिसमें दिखाया गया है कि डॉकर एप्लिकेशन को उनकी निर्भरताओं के साथ पैकेज करके वातावरण की विसंगतियों को कैसे समाप्त करता है।]

अपने डेडिकेटेड सर्वर पर डॉकर का उपयोग कब करें

डॉकर इन परिदृश्यों में विशेष रूप से फायदेमंद है:

  • माइक्रोसर्विस आर्किटेक्चर: मोनोलिथिक एप्लिकेशन को छोटी, स्वतंत्र रूप से डिप्लॉय करने योग्य सेवाओं में तोड़ने पर
  • कंटीन्यूअस इंटीग्रेशन/कंटीन्यूअस डिप्लॉयमेंट (CI/CD): डेवलपमेंट वर्कफ़्लो को सुव्यवस्थित करने और टेस्टिंग और डिप्लॉयमेंट को स्वचालित करने के लिए
  • लेगेसी एप्लिकेशन माइग्रेशन: पुराने एप्लिकेशन के डिप्लॉयमेंट को आधुनिक और मानकीकृत करने के लिए
  • डेवलपमेंट और टेस्टिंग वातावरण: डेवलपमेंट और टेस्टिंग के लिए सुसंगत, पुनरुत्पादित वातावरण बनाने के लिए
  • मल्टी-टेनेंट एप्लिकेशन: विभिन्न क्लाइंट्स के लिए एक ही एप्लिकेशन के कई इंस्टेंस चलाने पर

अनुभाग सारांश: डॉकर एप्लिकेशन को पैकेज और डिप्लॉय करने का एक मानकीकृत तरीका प्रदान करता है, जिससे निरंतरता, पृथक्करण, दक्षता और सरलीकृत प्रबंधन जैसे लाभ मिलते हैं। डेडिकेटेड सर्वर उपयोगकर्ताओं के लिए, डॉकर संसाधन उपयोग और डिप्लॉयमेंट वर्कफ़्लो में काफी सुधार कर सकता है।

मिनी-अक्सर पूछे जाने वाले प्रश्न:

क्या डॉकर वर्चुअलाइज़ेशन के समान है?

नहीं, डॉकर कंटेनराइज़ेशन का उपयोग करता है, जो पारंपरिक वर्चुअलाइज़ेशन से अलग है। जबकि वर्चुअल मशीनें पूरे ऑपरेटिंग सिस्टम का अनुकरण करती हैं, डॉकर कंटेनर होस्ट सिस्टम के कर्नेल को साझा करते हैं और केवल एप्लिकेशन प्रक्रियाओं को अलग करते हैं, जिससे वे अधिक हल्के और कुशल होते हैं।

क्या मैं किसी भी डेडिकेटेड सर्वर पर डॉकर चला सकता हूँ?

डॉकर अधिकांश आधुनिक डेडिकेटेड सर्वरों पर चल सकता है जो लिनक्स या विंडोज सर्वर चला रहे हैं। TildaVPS डेडिकेटेड सर्वर विशेष रूप से डॉकर डिप्लॉयमेंट के लिए अच्छी तरह से अनुकूल हैं, जो कंटेनराइज़्ड एप्लिकेशन के लिए आवश्यक प्रदर्शन और विश्वसनीयता प्रदान करते हैं।

अनुभाग 2: डॉकर के लिए अपने डेडिकेटेड सर्वर को तैयार करना

सिस्टम आवश्यकताएँ

अपने डेडिकेटेड सर्वर पर डॉकर स्थापित करने से पहले, सुनिश्चित करें कि आपका सिस्टम निम्नलिखित आवश्यकताओं को पूरा करता है:

लिनक्स-आधारित सर्वरों के लिए:

  • 64-बिट आर्किटेक्चर
  • कर्नेल संस्करण 3.10 या उच्चतर (4.x या नया अनुशंसित)
  • कम से कम 2GB रैम (उत्पादन के लिए 4GB+ अनुशंसित)
  • डॉकर इमेज और कंटेनर के लिए पर्याप्त स्टोरेज स्थान

विंडोज-आधारित सर्वरों के लिए:

  • विंडोज सर्वर 2016 या बाद का
  • हाइपर-वी क्षमता सक्षम
  • कम से कम 4GB रैम

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

bash
# कर्नेल संस्करण जांचें
uname -r

# सिस्टम आर्किटेक्चर जांचें
uname -m

# उपलब्ध मेमोरी जांचें
free -h

# उपलब्ध डिस्क स्थान जांचें
df -h

सही ऑपरेटिंग सिस्टम चुनना

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

डॉकर के लिए अनुशंसित लिनक्स वितरण:

  • उबंटू सर्वर 20.04 एलटीएस या नया
  • CentOS 8 या नया
  • डेबियन 10 या नया
  • आरएचईएल 8 या नया

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

अपने सिस्टम को अपडेट करना

डॉकर स्थापित करने से पहले, सुनिश्चित करें कि आपका सिस्टम अद्यतन है:

उबंटू/डेबियन के लिए:

bash
sudo apt update
sudo apt upgrade -y

CentOS/RHEL के लिए:

bash
sudo yum update -y

आवश्यक निर्भरताओं को स्थापित करना

डॉकर को ठीक से काम करने के लिए कुछ पैकेज की आवश्यकता होती है। इन निर्भरताओं को स्थापित करें:

उबंटू/डेबियन के लिए:

bash
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common gnupg lsb-release

CentOS/RHEL के लिए:

bash
sudo yum install -y yum-utils device-mapper-persistent-data lvm2

फ़ायरवॉल नियमों को कॉन्फ़िगर करना

यदि आपके डेडिकेटेड सर्वर पर फ़ायरवॉल सक्षम है, तो आपको डॉकर ट्रैफिक की अनुमति देने के लिए इसे कॉन्फ़िगर करना होगा:

UFW (उबंटू) के लिए:

bash
# डॉकर डेमन पोर्ट की अनुमति दें
sudo ufw allow 2375/tcp
sudo ufw allow 2376/tcp

# आवश्यकतानुसार कंटेनर पोर्ट की अनुमति दें
# उदाहरण: HTTP और HTTPS की अनुमति दें
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

firewalld (CentOS/RHEL) के लिए:

bash
sudo firewall-cmd --permanent --zone=public --add-port=2375/tcp
sudo firewall-cmd --permanent --zone=public --add-port=2376/tcp
sudo firewall-cmd --permanent --zone=public --add-port=80/tcp
sudo firewall-cmd --permanent --zone=public --add-port=443/tcp
sudo firewall-cmd --reload

दृश्य तत्व: [तालिका: डॉकर डिप्लॉयमेंट के लिए विभिन्न लिनक्स वितरणों की तुलना, प्रत्येक के लिए मुख्य विशेषताएं, फायदे और विचार दिखा रहा है।]

डॉकर के लिए एक डेडिकेटेड उपयोगकर्ता स्थापित करना

सुरक्षा कारणों से, डॉकर संचालन के लिए एक डेडिकेटेड उपयोगकर्ता बनाने की सलाह दी जाती है:

bash
# एक नया उपयोगकर्ता बनाएं
sudo adduser dockeruser

# उपयोगकर्ता को sudo समूह में जोड़ें
sudo usermod -aG sudo dockeruser

# नए उपयोगकर्ता पर स्विच करें
su - dockeruser

अनुभाग सारांश: आपके डेडिकेटेड सर्वर की उचित तैयारी एक सफल डॉकर डिप्लॉयमेंट के लिए महत्वपूर्ण है। सुनिश्चित करें कि आपका सिस्टम आवश्यकताओं को पूरा करता है, एक उपयुक्त ऑपरेटिंग सिस्टम चुनें, अपने सिस्टम को अपडेट करें, निर्भरताओं को स्थापित करें, फ़ायरवॉल नियमों को कॉन्फ़िगर करें, और डॉकर संचालन के लिए एक डेडिकेटेड उपयोगकर्ता स्थापित करें।

मिनी-अक्सर पूछे जाने वाले प्रश्न:

क्या मुझे डॉकर के लिए SELinux या AppArmor को अक्षम करने की आवश्यकता है?

नहीं, आधुनिक डॉकर संस्करण SELinux और AppArmor के साथ अच्छी तरह से काम करते हैं। इन सुरक्षा सुविधाओं को अक्षम करने के बजाय उन्हें सक्षम रखना और उन्हें ठीक से कॉन्फ़िगर करना अनुशंसित है।

क्या मैं डेडिकेटेड सर्वर के बजाय वर्चुअल प्राइवेट सर्वर (VPS) पर डॉकर चला सकता हूँ?

हाँ, डॉकर एक VPS पर चल सकता है, लेकिन TildaVPS से एक डेडिकेटेड सर्वर बेहतर प्रदर्शन प्रदान करता है, खासकर उत्पादन वर्कलोड के लिए, संसाधनों की गारंटी और कोई शोर-शराबे वाले पड़ोसी की समस्याओं के कारण।

अनुभाग 3: डॉकर स्थापित करना और कॉन्फ़िगर करना

डॉकर इंजन स्थापित करना

इंस्टॉलेशन प्रक्रिया आपके ऑपरेटिंग सिस्टम के आधार पर थोड़ी भिन्न होती है। अपने विशिष्ट वितरण के लिए इन स्टेप-बाय-स्टेप निर्देशों का पालन करें:

उबंटू/डेबियन इंस्टॉलेशन

  1. डॉकर की आधिकारिक GPG कुंजी जोड़ें:

    bash
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
    
  2. स्थिर रिपॉजिटरी स्थापित करें:

    bash
    echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
    
  3. पैकेज इंडेक्स को अपडेट करें और डॉकर स्थापित करें:

    bash
    sudo apt update
    sudo apt install -y docker-ce docker-ce-cli containerd.io
    
  4. इंस्टॉलेशन सत्यापित करें:

    bash
    sudo docker --version
    

CentOS/RHEL इंस्टॉलेशन

  1. डॉकर रिपॉजिटरी जोड़ें:

    bash
    sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    
  2. डॉकर स्थापित करें:

    bash
    sudo yum install -y docker-ce docker-ce-cli containerd.io
    
  3. डॉकर सेवा शुरू करें और सक्षम करें:

    bash
    sudo systemctl start docker
    sudo systemctl enable docker
    
  4. इंस्टॉलेशन सत्यापित करें:

    bash
    sudo docker --version
    

इंस्टॉलेशन के बाद के कदम

डॉकर स्थापित करने के बाद, इन महत्वपूर्ण इंस्टॉलेशन के बाद के कदमों को पूरा करें:

  1. डॉकर कमांड को sudo के बिना चलाने के लिए अपने उपयोगकर्ता को डॉकर समूह में जोड़ें:

    bash
    sudo usermod -aG docker $USER
    
  2. समूह परिवर्तनों के प्रभावी होने के लिए लॉग आउट करें और फिर से लॉग इन करें, या चलाएँ:

    bash
    newgrp docker
    
  3. सत्यापित करें कि डॉकर ठीक से चल रहा है:

    bash
    docker run hello-world
    

यह कमांड एक परीक्षण इमेज को डाउनलोड करता है और उसे एक कंटेनर में चलाता है। यदि सफल होता है, तो यह एक पुष्टिकरण संदेश प्रिंट करता है, यह दर्शाता है कि डॉकर सही ढंग से स्थापित और कार्य कर रहा है।

डॉकर डेमन को कॉन्फ़िगर करना

डॉकर डेमन (dockerd) को इसके व्यवहार को अनुकूलित करने के लिए कॉन्फ़िगर किया जा सकता है। कॉन्फ़िगरेशन फ़ाइल /etc/docker/daemon.json पर स्थित है:

  1. कॉन्फ़िगरेशन फ़ाइल बनाएँ या संपादित करें:

    bash
    sudo nano /etc/docker/daemon.json
    
  2. अपने कॉन्फ़िगरेशन विकल्प जोड़ें। यहाँ एक उदाहरण कॉन्फ़िगरेशन है:

    json
    {
      "data-root": "/var/lib/docker",
      "storage-driver": "overlay2",
      "log-driver": "json-file",
      "log-opts": {
        "max-size": "10m",
        "max-file": "3"
      },
      "default-address-pools": [
        {"base": "172.17.0.0/16", "size": 24}
      ],
      "registry-mirrors": [],
      "dns": ["8.8.8.8", "8.8.4.4"]
    }
    
  3. फ़ाइल सहेजें और परिवर्तनों को लागू करने के लिए डॉकर को पुनरारंभ करें:

    bash
    sudo systemctl restart docker
    

डॉकर कंपोज़ स्थापित करना

डॉकर कंपोज़ मल्टी-कंटेनर डॉकर एप्लिकेशन को परिभाषित और चलाने के लिए एक उपकरण है। इसे इन कमांडों के साथ स्थापित करें:

bash
# वर्तमान स्थिर रिलीज़ डाउनलोड करें
sudo curl -L "https://github.com/docker/compose/releases/download/v2.18.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

# निष्पादन योग्य अनुमतियाँ लागू करें
sudo chmod +x /usr/local/bin/docker-compose

# इंस्टॉलेशन सत्यापित करें
docker-compose --version

डॉकर रजिस्ट्री एक्सेस स्थापित करना

यदि आप निजी डॉकर रजिस्ट्रियों का उपयोग करने की योजना बना रहे हैं, तो आपको प्रमाणीकरण कॉन्फ़िगर करना होगा:

  1. अपनी डॉकर रजिस्ट्री में लॉग इन करें:

    bash
    docker login [registry-url]
    
  2. डॉकर हब के लिए:

    bash
    docker login
    
  3. प्रॉम्प्ट किए जाने पर अपना उपयोगकर्ता नाम और पासवर्ड दर्ज करें।

दृश्य तत्व: [छवि: एक सफल डॉकर इंस्टॉलेशन और "docker run hello-world" कमांड का आउटपुट दिखा रहा स्क्रीनशॉट।]

स्टोरेज ड्राइवर्स को कॉन्फ़िगर करना

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

  1. अपना वर्तमान स्टोरेज ड्राइवर जांचें:

    bash
    docker info | grep "Storage Driver"
    
  2. स्टोरेज ड्राइवर बदलने के लिए, daemon.json फ़ाइल संपादित करें:

    bash
    sudo nano /etc/docker/daemon.json
    
  3. स्टोरेज ड्राइवर सेटिंग जोड़ें या संशोधित करें:

    json
    {
      "storage-driver": "overlay2"
    }
    
  4. डॉकर को सहेजें और पुनरारंभ करें:

    bash
    sudo systemctl restart docker
    

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

मिनी-अक्सर पूछे जाने वाले प्रश्न:

क्या मुझे डॉकर का नवीनतम संस्करण या स्थिर रिलीज़ का उपयोग करना चाहिए?

डेडिकेटेड सर्वरों पर उत्पादन वातावरण के लिए, विश्वसनीयता सुनिश्चित करने के लिए डॉकर के स्थिर रिलीज़ का उपयोग करने की सलाह दी जाती है। TildaVPS सर्वर दोनों संस्करणों के साथ संगत हैं, लेकिन स्थिर रिलीज़ बेहतर दीर्घकालिक समर्थन प्रदान करते हैं।

इंस्टॉलेशन के बाद मैं डॉकर को कैसे अपडेट करूं?

डॉकर को अपडेट करने के लिए, अपने सिस्टम के पैकेज मैनेजर का उपयोग करें:

  • उबंटू/डेबियन के लिए: sudo apt update && sudo apt upgrade docker-ce docker-ce-cli containerd.io
  • CentOS/RHEL के लिए: sudo yum update docker-ce docker-ce-cli containerd.io

अनुभाग 4: अपना पहला डॉकर कंटेनर बनाना

डॉकर इमेज और कंटेनर को समझना

अपना पहला कंटेनर बनाने से पहले, डॉकर इमेज और कंटेनर के बीच संबंध को समझना महत्वपूर्ण है:

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

एक इमेज को ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग में एक क्लास के रूप में और एक कंटेनर को उस क्लास के इंस्टेंस के रूप में सोचें।

डॉकर इमेज ढूँढना और खींचना (Pulling)

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

bash
# एक इमेज खोजें
docker search nginx

# डॉकर हब से एक इमेज खींचें
docker pull nginx:latest

latest टैग इमेज के सबसे हाल के संस्करण को संदर्भित करता है। आप एक अलग टैग का उपयोग करके एक विशेष संस्करण निर्दिष्ट कर सकते हैं:

bash
# एक विशिष्ट संस्करण खींचें
docker pull nginx:1.21.6

अपना पहला कंटेनर चलाना

आइए आधिकारिक Nginx इमेज का उपयोग करके एक साधारण वेब सर्वर कंटेनर बनाएँ:

bash
# एक Nginx कंटेनर चलाएँ
docker run --name my-nginx -p 80:80 -d nginx

यह कमांड:

  • "my-nginx" नामक एक कंटेनर बनाता है
  • कंटेनर के पोर्ट 80 को होस्ट पर पोर्ट 80 से मैप करता है
  • कंटेनर को डिटैच्ड मोड (-d) में चलाता है
  • nginx इमेज का उपयोग करता है

अब आप वेब ब्राउज़र में अपने सर्वर के आईपी पते पर नेविगेट करके Nginx वेलकम पेज तक पहुंच सकते हैं।

बेसिक कंटेनर प्रबंधन

यहां आपके डॉकर कंटेनरों के प्रबंधन के लिए कुछ आवश्यक कमांड दिए गए हैं:

bash
# चल रहे कंटेनरों की सूची
docker ps

# सभी कंटेनरों की सूची (बंद सहित)
docker ps -a

# एक कंटेनर रोकें
docker stop my-nginx

# एक रुके हुए कंटेनर को शुरू करें
docker start my-nginx

# एक कंटेनर को पुनरारंभ करें
docker restart my-nginx

# एक कंटेनर हटाएँ (पहले रोका जाना चाहिए)
docker rm my-nginx

# एक कंटेनर को जबरन हटाएँ (भले ही चल रहा हो)
docker rm -f my-nginx

कंटेनर कॉन्फ़िगरेशन को अनुकूलित करना

डॉकर आपको अपने कंटेनरों के विभिन्न पहलुओं को अनुकूलित करने की अनुमति देता है:

पर्यावरण चर (Environment Variables)

-e फ्लैग का उपयोग करके अपने कंटेनर में पर्यावरण चर पास करें:

bash
docker run -d --name my-app -e DB_HOST=localhost -e DB_PORT=5432 my-app-image

वॉल्यूम माउंटिंग (Volume Mounting)

स्थायी स्टोरेज के लिए होस्ट डायरेक्टरी को कंटेनर डायरेक्टरी में माउंट करें:

bash
# एक होस्ट डायरेक्टरी को एक कंटेनर डायरेक्टरी में माउंट करें
docker run -d --name my-nginx -p 80:80 -v /path/on/host:/usr/share/nginx/html nginx

नेटवर्क कॉन्फ़िगरेशन (Network Configuration)

कंटेनर संचार के लिए कस्टम नेटवर्क बनाएँ:

bash
# एक नेटवर्क बनाएँ
docker network create my-network

# नेटवर्क पर एक कंटेनर चलाएँ
docker run -d --name my-app --network my-network my-app-image

डॉकरफाइल के साथ एक कस्टम डॉकर इमेज बनाना

एक डॉकरफाइल एक टेक्स्ट दस्तावेज़ है जिसमें डॉकर इमेज बनाने के निर्देश होते हैं। आइए एक Node.js एप्लिकेशन के लिए एक साधारण डॉकरफाइल बनाएँ:

  1. अपनी परियोजना के लिए एक नई डायरेक्टरी बनाएँ:

    bash
    mkdir node-app
    cd node-app
    
  2. एक साधारण Node.js एप्लिकेशन बनाएँ:

    bash
    # package.json बनाएँ
    echo '{
      "name": "node-app",
      "version": "1.0.0",
      "main": "server.js",
      "scripts": {
        "start": "node server.js"
      },
      "dependencies": {
        "express": "^4.18.2"
      }
    }' > package.json
    
    # server.js बनाएँ
    echo 'const express = require("express");
    const app = express();
    const PORT = process.env.PORT || 3000;
    
    app.get("/", (req, res) => {
      res.send("Hello from Docker on TildaVPS!");
    });
    
    app.listen(PORT, () => {
      console.log(`Server running on port ${PORT}`);
    });' > server.js
    
  3. एक डॉकरफाइल बनाएँ:

    bash
    echo 'FROM node:16-alpine
    
    WORKDIR /app
    
    COPY package*.json ./
    
    RUN npm install
    
    COPY . .
    
    EXPOSE 3000
    
    CMD ["npm", "start"]' > Dockerfile
    
  4. डॉकर इमेज बनाएँ:

    bash
    docker build -t my-node-app .
    
  5. अपनी इमेज से एक कंटेनर चलाएँ:

    bash
    docker run -d --name my-node-app -p 3000:3000 my-node-app
    

अब आप अपने सर्वर के आईपी पते पर पोर्ट 3000 पर नेविगेट करके अपने Node.js एप्लिकेशन तक पहुंच सकते हैं।

दृश्य तत्व: [छवि: डॉकरफाइल से लेकर कंटेनर चलाने तक, डॉकर इमेज बिल्डिंग प्रक्रिया को दर्शाने वाला आरेख, जिसमें प्रत्येक चरण को सचित्र किया गया है।]

स्टेप-बाय-स्टेप: डॉकर के साथ एक वेब एप्लिकेशन डिप्लॉय करना

आइए एक साधारण वेब एप्लिकेशन को डॉकराइज़ करने की पूरी प्रक्रिया पर चलें:

  1. अपनी एप्लिकेशन कोड तैयार करें

    • सुनिश्चित करें कि आपका एप्लिकेशन स्थानीय रूप से काम करता है
    • निर्भरताओं और आवश्यकताओं की पहचान करें
  2. एक डॉकरफाइल बनाएँ

    • एक उपयुक्त आधार इमेज चुनें
    • एप्लिकेशन फ़ाइलें कॉपी करें
    • निर्भरताएँ स्थापित करें
    • प्रवेश बिंदु कॉन्फ़िगर करें
  3. डॉकर इमेज बनाएँ

    bash
    docker build -t my-web-app:v1 .
    
  4. इमेज का स्थानीय रूप से परीक्षण करें

    bash
    docker run -d -p 8080:80 --name test-app my-web-app:v1
    
  5. इमेज को एक रजिस्ट्री में पुश करें (वैकल्पिक)

    bash
    docker tag my-web-app:v1 username/my-web-app:v1
    docker push username/my-web-app:v1
    
  6. उत्पादन सर्वर पर कंटेनर डिप्लॉय करें

    bash
    docker run -d -p 80:80 --restart always --name production-app my-web-app:v1
    
  7. मॉनिटरिंग और लॉगिंग स्थापित करें

    bash
    docker logs -f production-app
    

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

मिनी-अक्सर पूछे जाने वाले प्रश्न:

मैं एक चल रहे कंटेनर से लॉग्स को कैसे एक्सेस करूं?

आप docker logs कमांड का उपयोग करके कंटेनर लॉग्स को एक्सेस कर सकते हैं:

bash
docker logs my-container-name
# निरंतर लॉग आउटपुट के लिए
docker logs -f my-container-name

क्या मैं एक कंटेनर द्वारा उपयोग किए जा सकने वाले संसाधनों को सीमित कर सकता हूँ?

हाँ, डॉकर आपको सीपीयू, मेमोरी और अन्य संसाधनों को सीमित करने की अनुमति देता है:

bash
# कंटेनर को 2 सीपीयू और 1GB मेमोरी तक सीमित करें
docker run -d --name resource-limited-app --cpus=2 --memory=1g my-app-image

अनुभाग 5: डॉकर कंटेनर और इमेज का प्रबंधन

कुशल इमेज प्रबंधन

जैसे-जैसे आप डॉकर के साथ काम करते हैं, आप ऐसी इमेज जमा करते जाएंगे जो डिस्क स्थान का उपभोग करती हैं। उन्हें कुशलता से प्रबंधित करने का तरीका यहां बताया गया है:

इमेज को सूचीबद्ध करना और निरीक्षण करना

bash
# सभी इमेज सूचीबद्ध करें
docker images

# एक इमेज के बारे में विस्तृत जानकारी प्राप्त करें
docker inspect nginx

# एक इमेज का इतिहास दिखाएँ
docker history nginx

अप्रयुक्त इमेज हटाना

bash
# एक विशिष्ट इमेज हटाएँ
docker rmi nginx:1.21.6

# डेंगलिंग इमेज हटाएँ (अटैग की गई इमेज)
docker image prune

# सभी अप्रयुक्त इमेज हटाएँ
docker image prune -a

कंटेनर लाइफसाइकिल प्रबंधन

कंटेनर लाइफसाइकिल को समझना आपको अपने एप्लिकेशन को प्रभावी ढंग से प्रबंधित करने में मदद करता है:

कंटेनर स्थितियाँ

कंटेनर इन में से किसी एक स्थिति में हो सकते हैं:

  • बनाया गया (Created): कंटेनर बनाया गया है लेकिन शुरू नहीं हुआ है
  • चल रहा है (Running): कंटेनर सभी प्रक्रियाओं के साथ चल रहा है
  • विराम दिया गया (Paused): कंटेनर प्रक्रियाएँ विरामित हैं
  • रोका गया (Stopped): कंटेनर प्रक्रियाएँ बंद हैं
  • हटाया गया (Deleted): कंटेनर हटा दिया गया है और अब मौजूद नहीं है

कंटेनर लाइफसाइकिल का प्रबंधन

bash
# कंटेनर को शुरू किए बिना बनाएँ
docker create --name my-container nginx

# एक बनाए गए कंटेनर को शुरू करें
docker start my-container

# एक चल रहे कंटेनर को विराम दें
docker pause my-container

# एक विराम दिए गए कंटेनर को अनपॉज़ करें
docker unpause my-container

# एक चल रहे कंटेनर को रोकें
docker stop my-container

# एक कंटेनर हटाएँ
docker rm my-container

कंटेनर संसाधन निगरानी

कंटेनर संसाधन उपयोग की निगरानी प्रदर्शन अनुकूलन के लिए महत्वपूर्ण है:

bash
# चल रहे कंटेनर के आँकड़े दिखाएँ
docker stats

# विशिष्ट कंटेनरों के लिए आँकड़े दिखाएँ
docker stats container1 container2

# JSON प्रारूप में एक बार के आँकड़े प्राप्त करें
docker stats --no-stream --format "{{json .}}" container1

अधिक विस्तृत निगरानी के लिए, cAdvisor, Prometheus, या Grafana जैसे टूल का उपयोग करने पर विचार करें, जिन्हें डॉकर कंटेनरों के रूप में भी डिप्लॉय किया जा सकता है।

कंटेनर प्रबंधन को स्वचालित करना

स्वतः-पुनरारंभ नीतियाँ

सिस्टम रिबूट या क्रैश के बाद कंटेनरों को स्वचालित रूप से पुनरारंभ करने के लिए कॉन्फ़िगर करें:

bash
# कंटेनर को हमेशा पुनरारंभ करें
docker run -d --restart always --name my-app my-app-image

# केवल विफलता पर पुनरारंभ करें
docker run -d --restart on-failure --name my-app my-app-image

# अधिकतम पुनः प्रयास गणना के साथ विफलता पर पुनरारंभ करें
docker run -d --restart on-failure:5 --name my-app my-app-image

स्वास्थ्य जाँच

कंटेनर स्वास्थ्य की निगरानी के लिए स्वास्थ्य जाँच लागू करें:

bash
docker run -d --name my-web-app \
  --health-cmd="curl -f http://localhost/ || exit 1" \
  --health-interval=30s \
  --health-timeout=10s \
  --health-retries=3 \
  nginx

दृश्य तत्व: [तालिका: कंटेनर पुनरारंभ नीतियाँ उनके विवरण, उपयोग के मामलों और प्रत्येक नीति के लिए उदाहरणों के साथ।]

डॉकर वॉल्यूम के साथ डेटा प्रबंधन

डॉकर वॉल्यूम कंटेनर डेटा के लिए स्थायी स्टोरेज प्रदान करते हैं:

वॉल्यूम बनाना और प्रबंधित करना

bash
# एक नाम वाला वॉल्यूम बनाएँ
docker volume create my-data

# वॉल्यूम सूचीबद्ध करें
docker volume ls

# एक वॉल्यूम का निरीक्षण करें
docker volume inspect my-data

# एक वॉल्यूम हटाएँ
docker volume rm my-data

# सभी अप्रयुक्त वॉल्यूम हटाएँ
docker volume prune

कंटेनर के साथ वॉल्यूम का उपयोग करना

bash
# एक नाम वाला वॉल्यूम माउंट करें
docker run -d --name my-db -v my-data:/var/lib/mysql mysql:8.0

# एक होस्ट डायरेक्टरी माउंट करें
docker run -d --name my-web -v /path/on/host:/usr/share/nginx/html nginx

कंटेनर डेटा का बैकअप और पुनर्स्थापना

एक वॉल्यूम का बैकअप लेना

bash
# एक बैकअप कंटेनर बनाएँ जो वॉल्यूम को माउंट करता है और इसे एक तार फ़ाइल में बैकअप करता है
docker run --rm -v my-data:/source -v $(pwd):/backup alpine tar -czf /backup/my-data-backup.tar.gz -C /source .

एक वॉल्यूम को पुनर्स्थापित करना

bash
# एक नया वॉल्यूम बनाएँ
docker volume create my-data-restored

# बैकअप से पुनर्स्थापित करें
docker run --rm -v my-data-restored:/target -v $(pwd):/backup alpine sh -c "tar -xzf /backup/my-data-backup.tar.gz -C /target"

अनुभाग सारांश: प्रभावी डॉकर कंटेनर और इमेज प्रबंधन में इमेज प्रबंधन, कंटेनर लाइफसाइकिल, संसाधन निगरानी, स्वचालन, वॉल्यूम के साथ डेटा प्रबंधन और बैकअप/पुनर्स्थापना प्रक्रियाएँ शामिल हैं। इन पहलुओं में महारत हासिल करना आपके डेडिकेटेड सर्वर पर आपके डॉकराइज़्ड एप्लिकेशन के कुशल संचालन को सुनिश्चित करता है।

मिनी-अक्सर पूछे जाने वाले प्रश्न:

मैं अपनी डॉकर इमेज का आकार कैसे कम कर सकता हूँ?

मल्टी-स्टेज बिल्ड का उपयोग करें, परतों की संख्या कम करें, अल्पाइन जैसे छोटे आधार इमेज का उपयोग करें, और अनावश्यक फ़ाइलों को उसी परत में साफ करें जिसमें वे बनाई गई थीं।

डॉकर वॉल्यूम और बाइंड माउंट में क्या अंतर है?

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

अनुभाग 6: मल्टी-कंटेनर एप्लिकेशन के लिए डॉकर कंपोज़

डॉकर कंपोज़ का परिचय

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

डॉकर कंपोज़ स्थापित करना (यदि पहले से स्थापित नहीं है)

यदि आपने अभी तक डॉकर कंपोज़ स्थापित नहीं किया है, तो इन चरणों का पालन करें:

bash
# डॉकर कंपोज़ डाउनलोड करें
sudo curl -L "https://github.com/docker/compose/releases/download/v2.18.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

# निष्पादन योग्य अनुमतियाँ लागू करें
sudo chmod +x /usr/local/bin/docker-compose

# इंस्टॉलेशन सत्यापित करें
docker-compose --version

डॉकर कंपोज़ फ़ाइल बनाना

डॉकर कंपोज़ फ़ाइल (आमतौर पर docker-compose.yml नामक) आपके एप्लिकेशन की सेवाओं, नेटवर्क और वॉल्यूम को परिभाषित करती है:

  1. अपनी परियोजना के लिए एक नई डायरेक्टरी बनाएँ:

    bash
    mkdir compose-demo
    cd compose-demo
    
  2. एक docker-compose.yml फ़ाइल बनाएँ:

    bash
    nano docker-compose.yml
    
  3. एक डेटाबेस के साथ एक साधारण वेब एप्लिकेशन के लिए निम्नलिखित सामग्री जोड़ें:

    yaml
    version: '3.8'
    
    services:
      web:
        image: nginx:latest
        ports:
          - "80:80"
        volumes:
          - ./website:/usr/share/nginx/html
        depends_on:
          - app
        networks:
          - frontend
          - backend
    
      app:
        build: ./app
        environment:
          - DB_HOST=db
          - DB_USER=myuser
          - DB_PASSWORD=mypassword
          - DB_NAME=mydb
        depends_on:
          - db
        networks:
          - backend
    
      db:
        image: mysql:8.0
        environment:
          - MYSQL_ROOT_PASSWORD=rootpassword
          - MYSQL_DATABASE=mydb
          - MYSQL_USER=myuser
          - MYSQL_PASSWORD=mypassword
        volumes:
          - db-data:/var/lib/mysql
        networks:
          - backend
    
    networks:
      frontend:
      backend:
    
    volumes:
      db-data:
    

बेसिक डॉकर कंपोज़ कमांड

bash
# सेवाओं को डिटैच्ड मोड में शुरू करें
docker-compose up -d

# चल रही सेवाओं को देखें
docker-compose ps

# सभी सेवाओं से लॉग देखें
docker-compose logs

# एक विशिष्ट सेवा से लॉग देखें
docker-compose logs app

# सेवाओं को रोकें
docker-compose stop

# कंटेनर, नेटवर्क और वॉल्यूम को रोकें और हटाएँ
docker-compose down

# कंटेनर, नेटवर्क, वॉल्यूम और इमेज को रोकें और हटाएँ
docker-compose down --rmi all --volumes

स्टेप-बाय-स्टेप: डॉकर कंपोज़ के साथ एक LAMP स्टैक डिप्लॉय करना

आइए डॉकर कंपोज़ का उपयोग करके एक पूर्ण LAMP (Linux, Apache, MySQL, PHP) स्टैक बनाएँ:

  1. एक परियोजना डायरेक्टरी बनाएँ:

    bash
    mkdir lamp-docker
    cd lamp-docker
    
  2. आवश्यक उप-डायरेक्टरी बनाएँ:

    bash
    mkdir -p www/html
    mkdir mysql
    
  3. सेटअप का परीक्षण करने के लिए एक साधारण PHP फ़ाइल बनाएँ:

    bash
    echo '<?php
    phpinfo();
    ?>' > www/html/index.php
    
  4. डॉकर कंपोज़ फ़ाइल बनाएँ:

    bash
    nano docker-compose.yml
    
  5. निम्नलिखित सामग्री जोड़ें:

    yaml
    version: '3.8'
    
    services:
      webserver:
        image: php:8.0-apache
        ports:
          - "80:80"
        volumes:
          - ./www/html:/var/www/html
        depends_on:
          - db
        networks:
          - lamp-network
    
      db:
        image: mysql:8.0
        ports:
          - "3306:3306"
        environment:
          MYSQL_ROOT_PASSWORD: rootpassword
          MYSQL_DATABASE: lamp_db
          MYSQL_USER: lamp_user
          MYSQL_PASSWORD: lamp_password
        volumes:
          - ./mysql:/var/lib/mysql
        networks:
          - lamp-network
    
      phpmyadmin:
        image: phpmyadmin/phpmyadmin
        ports:
          - "8080:80"
        environment:
          PMA_HOST: db
          PMA_PORT: 3306
        depends_on:
          - db
        networks:
          - lamp-network
    
    networks:
      lamp-network:
    
  6. LAMP स्टैक शुरू करें:

    bash
    docker-compose up -d
    
  7. अपने एप्लिकेशन तक पहुँचें:

दृश्य तत्व: [छवि: डॉकर कंपोज़ के साथ LAMP स्टैक की वास्तुकला को दर्शाने वाला आरेख, जिसमें दिखाया गया है कि कंटेनर एक-दूसरे से कैसे जुड़ते हैं।]

पर्यावरण चर और रहस्य प्रबंधन

उत्पादन वातावरण के लिए, संवेदनशील जानकारी को सुरक्षित रूप से प्रबंधित करना महत्वपूर्ण है:

.env फ़ाइलों का उपयोग करना

  1. एक .env फ़ाइल बनाएँ:

    bash
    nano .env
    
  2. अपने पर्यावरण चर जोड़ें:

    plaintext
    MYSQL_ROOT_PASSWORD=securepassword
    MYSQL_DATABASE=production_db
    MYSQL_USER=prod_user
    MYSQL_PASSWORD=prod_password
    
  3. अपने docker-compose.yml में इन चर को संदर्भित करें:

    yaml
    services:
      db:
        image: mysql:8.0
        environment:
          MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
          MYSQL_DATABASE: ${MYSQL_DATABASE}
          MYSQL_USER: ${MYSQL_USER}
          MYSQL_PASSWORD: ${MYSQL_PASSWORD}
    

डॉकर सीक्रेट्स का उपयोग करना (डॉकर स्वार्म के लिए)

यदि आप डॉकर स्वार्म का उपयोग कर रहे हैं, तो आप संवेदनशील डेटा के लिए डॉकर सीक्रेट्स का उपयोग कर सकते हैं:

yaml
services:
  db:
    image: mysql:8.0
    secrets:
      - db_root_password
      - db_password
    environment:
      MYSQL_ROOT_PASSWORD_FILE: /run/secrets/db_root_password
      MYSQL_PASSWORD_FILE: /run/secrets/db_password

secrets:
  db_root_password:
    file: ./secrets/db_root_password.txt
  db_password:
    file: ./secrets/db_password.txt

अनुभाग सारांश: डॉकर कंपोज़ मल्टी-कंटेनर एप्लिकेशन के डिप्लॉयमेंट और प्रबंधन को सरल बनाता है, जिससे आप अपने पूरे स्टैक को एक ही YAML फ़ाइल में परिभाषित कर सकते हैं। डॉकर कंपोज़ के साथ, आप आसानी से एक LAMP स्टैक जैसे जटिल एप्लिकेशन को डिप्लॉय कर सकते हैं, पर्यावरण चर और रहस्यों का प्रबंधन कर सकते हैं, और सरल कमांड के साथ अपने सभी कंटेनरों के लाइफसाइकिल को नियंत्रित कर सकते हैं।

मिनी-अक्सर पूछे जाने वाले प्रश्न

क्या मैं उत्पादन में डॉकर कंपोज़ का उपयोग कर सकता हूँ?

हाँ, डॉकर कंपोज़ का उपयोग उत्पादन वातावरण में किया जा सकता है, खासकर छोटे डिप्लॉयमेंट के लिए। बड़े, अधिक जटिल डिप्लॉयमेंट के लिए, आप अतिरिक्त ऑर्केस्ट्रेशन सुविधाओं के लिए डॉकर स्वार्म या कुबेरनेट्स पर विचार कर सकते हैं। TildaVPS डेडिकेटेड सर्वर उत्पादन डॉकर कंपोज़ डिप्लॉयमेंट के लिए आवश्यक प्रदर्शन प्रदान करते हैं।

डॉकर कंपोज़ में परिभाषित सेवाओं को मैं कैसे अपडेट करूं?

सेवाओं को अपडेट करने के लिए, अपनी docker-compose.yml फ़ाइल को संशोधित करें, फिर चलाएँ:

bash
docker-compose up -d --build

यह कमांड यदि आवश्यक हो तो इमेज को फिर से बनाता है और वॉल्यूम और डेटा को बनाए रखते हुए परिवर्तनों के साथ कंटेनर को फिर से बनाता है।

अनुभाग 7: डॉकर सुरक्षा सर्वोत्तम अभ्यास

डॉकर सुरक्षा जोखिमों को समझना

हालांकि डॉकर कंटेनरों और होस्ट सिस्टम के बीच अलगाव प्रदान करता है, फिर भी कई सुरक्षा विचार हैं जिन पर ध्यान देने की आवश्यकता है:

  1. कंटेनर एस्केप: यदि कोई कंटेनर खतरे में पड़ जाता है, तो एक हमलावर कंटेनर से भागने और होस्ट सिस्टम तक पहुँचने का प्रयास कर सकता है।
  2. इमेज कमजोरियाँ: डॉकर इमेज में कमजोर सॉफ़्टवेयर या दुर्भावनापूर्ण कोड हो सकता है।
  3. अत्यधिक विशेषाधिकार: अनावश्यक विशेषाधिकारों के साथ चल रहे कंटेनर सुरक्षा जोखिम पैदा करते हैं।
  4. असुरक्षित कॉन्फ़िगरेशन: गलत तरीके से कॉन्फ़िगर किए गए कंटेनर संवेदनशील डेटा या सेवाओं को उजागर कर सकते हैं।
  5. संसाधन का दुरुपयोग: उचित सीमाओं के बिना, कंटेनर अत्यधिक संसाधनों का उपभोग कर सकते हैं, जिससे सेवा से इनकार हो सकता है।

डॉकर डेमन को सुरक्षित करना

डॉकर डेमन एक महत्वपूर्ण घटक है जिसे सुरक्षित करने की आवश्यकता है:

  1. TLS प्रमाणीकरण का उपयोग करें:

    bash
    # CA, सर्वर और क्लाइंट प्रमाणपत्र बनाएँ
    mkdir -p ~/.docker/certs
    cd ~/.docker/certs
    openssl genrsa -aes256 -out ca-key.pem 4096
    openssl req -new -x509 -days 365 -key ca-key.pem -sha256 -out ca.pem
    
  2. TLS का उपयोग करने के लिए डॉकर को कॉन्फ़िगर करें: /etc/docker/daemon.json संपादित करें:

    json
    {
      "tls": true,
      "tlscacert": "/root/.docker/certs/ca.pem",
      "tlscert": "/root/.docker/certs/server-cert.pem",
      "tlskey": "/root/.docker/certs/server-key.pem",
      "tlsverify": true
    }
    
  3. डॉकर को पुनरारंभ करें:

    bash
    sudo systemctl restart docker
    

इमेज सुरक्षा

अपनी डॉकर इमेज की सुरक्षा सुनिश्चित करें:

  1. आधिकारिक या सत्यापित इमेज का उपयोग करें: हमेशा डॉकर हब या सत्यापित प्रकाशकों से आधिकारिक इमेज को प्राथमिकता दें।

  2. कमजोरियों के लिए इमेज स्कैन करें:

    bash
    # डॉकर स्कैन स्थापित करें
    docker scan --version
    
    # एक इमेज स्कैन करें
    docker scan nginx:latest
    
  3. न्यूनतम आधार इमेज का उपयोग करें: हमला सतह को कम करने के लिए अल्पाइन या डिस्टोलस इमेज का उपयोग करें:

    dockerfile
    FROM alpine:3.16
    # के बजाय
    # FROM ubuntu:22.04
    
  4. इमेज को अद्यतन रखें: सुरक्षा पैच को शामिल करने के लिए अपनी इमेज को नियमित रूप से अपडेट करें:

    bash
    docker pull nginx:latest
    
  5. मल्टी-स्टेज बिल्ड लागू करें:

    dockerfile
    # बिल्ड स्टेज
    FROM node:16 AS build
    WORKDIR /app
    COPY package*.json ./
    RUN npm install
    COPY . .
    RUN npm run build
    
    # उत्पादन स्टेज
    FROM nginx:alpine
    COPY --from=build /app/dist /usr/share/nginx/html
    

कंटेनर रनटाइम सुरक्षा

अपने चल रहे कंटेनरों को सुरक्षित करें:

  1. कंटेनर को गैर-रूट के रूप में चलाएँ:

    dockerfile
    # अपने डॉकरफाइल में एक गैर-रूट उपयोगकर्ता जोड़ें
    RUN addgroup -g 1000 appuser && \
        adduser -u 1000 -G appuser -s /bin/sh -D appuser
    USER appuser
    
  2. केवल-पढ़ने योग्य फ़ाइल सिस्टम का उपयोग करें:

    bash
    docker run --read-only --tmpfs /tmp nginx
    
  3. कंटेनर क्षमताओं को सीमित करें:

    bash
    docker run --cap-drop=ALL --cap-add=NET_BIND_SERVICE nginx
    
  4. संसाधन सीमाएँ निर्धारित करें:

    bash
    docker run --memory=512m --cpus=0.5 nginx
    
  5. सुरक्षा विकल्पों का उपयोग करें:

    bash
    docker run --security-opt=no-new-privileges nginx
    

दृश्य तत्व: [तालिका: डॉकर सुरक्षा विकल्प विवरण, उदाहरण और विभिन्न प्रकार के एप्लिकेशन के लिए अनुशंसित सेटिंग्स के साथ।]

नेटवर्क सुरक्षा

कंटेनर नेटवर्किंग को सुरक्षित करें:

  1. कस्टम ब्रिज नेटवर्क का उपयोग करें:

    bash
    # एक कस्टम नेटवर्क बनाएँ
    docker network create --driver bridge secure-network
    
    # इस नेटवर्क पर कंटेनर चलाएँ
    docker run --network secure-network --name app1 my-app
    docker run --network secure-network --name db mysql
    
  2. बाहरी पहुँच को प्रतिबंधित करें: केवल आवश्यक पोर्ट को उजागर करें:

    bash
    # केवल लोकलहोस्ट पर उजागर करें
    docker run -p 127.0.0.1:80:80 nginx
    
  3. नेटवर्क नीतियों का उपयोग करें: यदि कुबेरनेट्स या डॉकर स्वार्म का उपयोग कर रहे हैं, तो कंटेनरों के बीच ट्रैफिक को नियंत्रित करने के लिए नेटवर्क नीतियों को लागू करें।

रहस्य प्रबंधन

संवेदनशील डेटा को सुरक्षित रूप से प्रबंधित करें:

  1. पर्यावरण फ़ाइलों का उपयोग करें:

    bash
    # एक env फ़ाइल बनाएँ
    echo "DB_PASSWORD=securepassword" > .env
    
    # डॉकर रन के साथ इसका उपयोग करें
    docker run --env-file .env my-app
    
  2. रहस्यों को फ़ाइलों के रूप में माउंट करें:

    bash
    # एक रहस्य डायरेक्टरी बनाएँ
    mkdir -p secrets
    echo "securepassword" > secrets/db_password
    
    # एक केवल-पढ़ने योग्य फ़ाइल के रूप में माउंट करें
    docker run -v $(pwd)/secrets/db_password:/run/secrets/db_password:ro my-app
    
  3. डॉकर सीक्रेट्स का उपयोग करें (स्वार्म मोड):

    bash
    # एक रहस्य बनाएँ
    echo "securepassword" | docker secret create db_password -
    
    # एक सेवा में रहस्य का उपयोग करें
    docker service create --name my-app --secret db_password my-app
    

निगरानी और ऑडिटिंग

सुरक्षा के लिए निगरानी और ऑडिटिंग लागू करें:

  1. डॉकर ऑडिट लॉगिंग सक्षम करें: डॉकर की निगरानी के लिए लिनक्स ऑडिट सिस्टम को कॉन्फ़िगर करें:

    bash
    sudo auditctl -w /usr/bin/docker -p rwxa
    
  2. कंटेनर निगरानी उपकरणों का उपयोग करें: प्रोमेथियस और ग्रफ़ाना जैसे निगरानी समाधान डिप्लॉय करें:

    bash
    # प्रोमेथियस चलाएँ
    docker run -d -p 9090:9090 --name prometheus prom/prometheus
    
    # ग्रफ़ाना चलाएँ
    docker run -d -p 3000:3000 --name grafana grafana/grafana
    
  3. रनटाइम सुरक्षा निगरानी लागू करें: रनटाइम सुरक्षा निगरानी के लिए फाल्को जैसे उपकरणों पर विचार करें:

    bash
    docker run -d --name falco --privileged -v /var/run/docker.sock:/var/run/docker.sock falcosecurity/falco
    

स्टेप-बाय-स्टेप: एक सुरक्षित डॉकर वातावरण लागू करना

  1. डॉकर को नवीनतम संस्करण में अपडेट करें

    bash
    sudo apt update
    sudo apt upgrade docker-ce docker-ce-cli containerd.io
    
  2. डॉकर संचालन के लिए एक समर्पित उपयोगकर्ता बनाएँ

    bash
    sudo adduser dockeruser
    sudo usermod -aG docker dockeruser
    
  3. डॉकर डेमन सुरक्षा कॉन्फ़िगर करें /etc/docker/daemon.json संपादित करें:

    json
    {
      "icc": false,
      "userns-remap": "default",
      "log-driver": "json-file",
      "log-opts": {
        "max-size": "10m",
        "max-file": "3"
      },
      "no-new-privileges": true
    }
    
  4. डॉकर को पुनरारंभ करें

    bash
    sudo systemctl restart docker
    
  5. एक सुरक्षित डॉकर नेटवर्क बनाएँ

    bash
    docker network create --driver bridge secure-network
    
  6. अपने वर्कफ़्लो में इमेज स्कैनिंग लागू करें

    bash
    # Trivy का उपयोग करके उदाहरण
    docker run --rm -v /var/run/docker.sock:/var/run/docker.sock aquasec/trivy image nginx:latest
    
  7. मॉनिटरिंग स्थापित करें

    bash
    # कंटेनर निगरानी के लिए cAdvisor चलाएँ
    docker run -d --name cadvisor \
      --volume=/:/rootfs:ro \
      --volume=/var/run:/var/run:ro \
      --volume=/sys:/sys:ro \
      --volume=/var/lib/docker/:/var/lib/docker:ro \
      --publish=8080:8080 \
      gcr.io/cadvisor/cadvisor:latest
    

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

मिनी-अक्सर पूछे जाने वाले प्रश्न:

क्या डॉकर डिफ़ॉल्ट रूप से सुरक्षित है?

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

मुझे अपनी डॉकर इमेज कितनी बार अपडेट करनी चाहिए?

आपको अपनी डॉकर इमेज को नियमित रूप से अपडेट करना चाहिए, आदर्श रूप से एक स्वचालित CI/CD पाइपलाइन के हिस्से के रूप में। कम से कम, सुरक्षा पैच को शामिल करने के लिए मासिक रूप से इमेज अपडेट करें, या महत्वपूर्ण कमजोरियों की घोषणा होने पर तुरंत।

निष्कर्ष

अपने डेडिकेटेड सर्वर पर एप्लिकेशन को डॉकराइज़ करने से कई लाभ मिलते हैं, जिसमें बेहतर संसाधन उपयोग और डिप्लॉयमेंट निरंतरता से लेकर बढ़ी हुई स्केलेबिलिटी और अलगाव शामिल है। इस गाइड में, हमने आपके डेडिकेटेड सर्वर पर डॉकर को लागू करने की पूरी प्रक्रिया को कवर किया है:

  1. सर्वर वातावरण के लिए डॉकर और इसके लाभों को समझना
  2. सही ऑपरेटिंग सिस्टम और कॉन्फ़िगरेशन के साथ अपने डेडिकेटेड सर्वर को तैयार करना
  3. इष्टतम प्रदर्शन के लिए डॉकर को स्थापित करना और कॉन्फ़िगर करना
  4. अपने एप्लिकेशन के लिए डॉकर कंटेनर बनाना और प्रबंधित करना
  5. मल्टी-कंटेनर एप्लिकेशन के लिए डॉकर कंपोज़ का उपयोग करना
  6. अपने डॉकर वातावरण को सुरक्षित रखने के लिए सुरक्षा सर्वोत्तम अभ्यास लागू करना

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

डॉकर कंटेनराइज़ेशन TildaVPS डेडिकेटेड सर्वर उपयोगकर्ताओं के लिए विशेष रूप से मूल्यवान है, क्योंकि यह आपको अपने सर्वर हार्डवेयर के प्रदर्शन और क्षमताओं को अधिकतम करने की अनुमति देता है। डॉकर के साथ, आप एक ही सर्वर पर कई अलग-अलग एप्लिकेशन चला सकते हैं, सुसंगत डेवलपमेंट और डिप्लॉयमेंट वर्कफ़्लो लागू कर सकते हैं, और आवश्यकतानुसार अपने एप्लिकेशन को आसानी से स्केल कर सकते हैं।

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

कॉल टू एक्शन: अपने एप्लिकेशन को डॉकराइज़ करने के लिए तैयार हैं? TildaVPS उच्च-प्रदर्शन वाले डेडिकेटेड सर्वर प्रदान करता है जो डॉकर डिप्लॉयमेंट के लिए पूरी तरह से अनुकूल हैं। सर्वर विकल्पों का पता लगाने के लिए TildaVPS के डेडिकेटेड सर्वर पेज पर जाएँ या अपनी विशिष्ट डॉकर वर्कलोड आवश्यकताओं के आधार पर व्यक्तिगत सिफारिशों के लिए उनकी सहायता टीम से संपर्क करें।

अक्सर पूछे जाने वाले प्रश्न (FAQ)

डॉकर और पारंपरिक वर्चुअलाइज़ेशन में क्या अंतर है?

पारंपरिक वर्चुअलाइज़ेशन (जैसे VMware या VirtualBox) अपने स्वयं के ऑपरेटिंग सिस्टम के साथ पूर्ण वर्चुअल मशीनें बनाता है, जिसके लिए महत्वपूर्ण संसाधनों की आवश्यकता होती है। डॉकर कंटेनराइज़ेशन का उपयोग करता है, जो होस्ट ओएस कर्नेल को साझा करता है और केवल एप्लिकेशन प्रक्रियाओं को अलग करता है। यह डॉकर कंटेनरों को पारंपरिक वीएम की तुलना में बहुत हल्का, शुरू करने में तेज़ और अधिक संसाधन-कुशल बनाता है। एक TildaVPS डेडिकेटेड सर्वर पर, इसका मतलब है कि आप समान हार्डवेयर के साथ वर्चुअल मशीनों की तुलना में कई अधिक डॉकर कंटेनर चला सकते हैं।

क्या मैं विंडोज सर्वर पर डॉकर चला सकता हूँ?

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

मैं अपने मौजूदा एप्लिकेशन को डॉकर में कैसे माइग्रेट करूं?

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

  1. सभी निर्भरताओं और रनटाइम आवश्यकताओं की पहचान करें
  2. एक डॉकरफाइल बनाएँ जो पर्यावरण को दोहराता है
  3. डॉकर इमेज को स्थानीय रूप से बनाएँ और परीक्षण करें
  4. कंटेनराइज़्ड ऑपरेशन के लिए कॉन्फ़िगरेशन समायोजित करें
  5. डॉकर वॉल्यूम के साथ स्थायी स्टोरेज स्थापित करें
  6. कंटेनराइज़्ड एप्लिकेशन को अपने उत्पादन सर्वर पर डिप्लॉय करें

डॉकर चलाने के लिए संसाधन आवश्यकताएँ क्या हैं?

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

  • सीपीयू: कम से कम 2 कोर (मल्टी-कंटेनर वर्कलोड के लिए अधिक)
  • रैम: न्यूनतम 4GB (उत्पादन के लिए 8GB+ अनुशंसित)
  • स्टोरेज: डॉकर इंजन और इमेज के लिए 20GB+
  • नेटवर्क: स्टैंडर्ड ईथरनेट कनेक्शन (1Gbps अनुशंसित) TildaVPS डेडिकेटेड सर्वर इन आवश्यकताओं से अधिक हैं, जो डॉकर डिप्लॉयमेंट के लिए पर्याप्त संसाधन प्रदान करते हैं।

मैं डॉकर के साथ डेटाबेस पर्सिस्टेंस को कैसे संभालूं?

डॉकर में डेटाबेस पर्सिस्टेंस को आमतौर पर वॉल्यूम का उपयोग करके प्रबंधित किया जाता है। इसे स्थापित करने का तरीका यहां बताया गया है:

  1. एक नाम वाला वॉल्यूम बनाएँ: docker volume create db-data
  2. वॉल्यूम के साथ अपना डेटाबेस कंटेनर चलाएँ: docker run -d --name mysql -v db-data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=password mysql:8.0
  3. बैकअप के लिए, उपयोग करें: docker run --rm -v db-data:/source -v $(pwd):/backup alpine tar -czf /backup/db-backup.tar.gz -C /source .

यह सुनिश्चित करता है कि आपका डेटा तब भी बना रहे जब कंटेनर हटा दिया जाए या बदल दिया जाए।

क्या मैं उत्पादन वर्कलोड के लिए डॉकर का उपयोग कर सकता हूँ?

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

  1. 'latest' के बजाय विशिष्ट इमेज टैग का उपयोग करें
  2. कंटेनरों के लिए स्वास्थ्य जाँच लागू करें
  3. उचित निगरानी और लॉगिंग स्थापित करें
  4. डॉकर कंपोज़ या डॉकर स्वार्म या कुबेरनेट्स जैसे ऑर्केस्ट्रेशन टूल का उपयोग करें
  5. सुरक्षा सर्वोत्तम अभ्यास लागू करें
  6. वॉल्यूम के लिए स्वचालित बैकअप स्थापित करें
  7. अपनी कस्टम इमेज के लिए एक रजिस्ट्री का उपयोग करें

TildaVPS डेडिकेटेड सर्वर उत्पादन डॉकर वर्कलोड के लिए आवश्यक स्थिरता और प्रदर्शन प्रदान करते हैं।

मैं बिना डाउनटाइम के डॉकर कंटेनर को कैसे अपडेट करूं?

न्यूनतम या बिना डाउनटाइम के कंटेनर को अपडेट करने के लिए, आप इन दृष्टिकोणों का उपयोग कर सकते हैं:

  1. ब्लू-ग्रीन डिप्लॉयमेंट: नए कंटेनर को पुराने कंटेनर के साथ चलाएँ, फिर नया कंटेनर तैयार होने के बाद ट्रैफिक स्विच करें।

    bash
    # नई इमेज खींचें
    docker pull myapp:v2
    # एक अलग पोर्ट पर नया कंटेनर चलाएँ
    docker run -d --name myapp-v2 -p 8081:80 myapp:v2
    # नए कंटेनर का परीक्षण करें
    # लोड बैलेंसर को नए कंटेनर पर इंगित करने के लिए अपडेट करें
    # पुराने कंटेनर को रोकें
    docker stop myapp-v1
    
  2. डॉकर स्वार्म या कुबेरनेट्स का उपयोग करना: ये ऑर्केस्ट्रेशन टूल रोलिंग अपडेट को स्वचालित रूप से संभालते हैं।

डॉकर कंटेनर की निगरानी का सबसे अच्छा तरीका क्या है?

कई उपकरण डॉकर कंटेनर की निगरानी में मदद कर सकते हैं:

  1. डॉकर के अंतर्निहित उपकरण: docker stats और docker events
  2. cAdvisor: कंटेनर-विशिष्ट प्रदर्शन मेट्रिक्स प्रदान करता है
  3. प्रोमेथियस + ग्रफ़ाना: मेट्रिक्स संग्रह और विज़ुअलाइज़ेशन के लिए एक शक्तिशाली संयोजन
  4. ELK स्टैक: लॉग एग्रीगेशन और विश्लेषण के लिए
  5. Portainer: डॉकर प्रबंधन और निगरानी के लिए एक वेब यूआई

अपने TildaVPS डेडिकेटेड सर्वर पर एक व्यापक निगरानी समाधान के लिए, प्रोमेथियस और ग्रफ़ाना को कंटेनरों में स्थापित करने पर विचार करें:

bash
# निगरानी के लिए एक नेटवर्क बनाएँ
docker network create monitoring

# प्रोमेथियस चलाएँ
docker run -d --name prometheus \
  --network monitoring \
  -p 9090:9090 \
  -v prometheus-data:/prometheus \
  prom/prometheus

# ग्रफ़ाना चलाएँ
docker run -d --name grafana \
  --network monitoring \
  -p 3000:3000 \
  -v grafana-data:/var/lib/grafana \
  grafana/grafana

मुख्य निष्कर्ष

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

शब्दावली

  • कंटेनर (Container): एक हल्का, स्वसंपूर्ण, निष्पादन योग्य पैकेज जिसमें सॉफ़्टवेयर का एक टुकड़ा चलाने के लिए आवश्यक सब कुछ शामिल होता है।
  • डॉकर डेमन (Docker Daemon): पृष्ठभूमि सेवा जो सिस्टम पर डॉकर कंटेनर का प्रबंधन करती है।
  • डॉकर हब (Docker Hub): डॉकर इमेज के लिए एक क्लाउड-आधारित रजिस्ट्री सेवा।
  • डॉकर इमेज (Docker Image): डॉकर कंटेनर बनाने के लिए उपयोग किया जाने वाला एक केवल-पढ़ने योग्य टेम्पलेट।
  • डॉकरफाइल (Dockerfile): एक टेक्स्ट दस्तावेज़ जिसमें डॉकर इमेज बनाने के निर्देश होते हैं।
  • डॉकर कंपोज़ (Docker Compose): मल्टी-कंटेनर डॉकर एप्लिकेशन को परिभाषित और चलाने के लिए एक उपकरण।
  • वॉल्यूम (Volume): डॉकर कंटेनर के लिए एक स्थायी डेटा स्टोरेज तंत्र।
  • रजिस्ट्री (Registry): डॉकर इमेज को स्टोर और वितरित करने के लिए एक रिपॉजिटरी।
  • लेयर (Layer): एक इमेज में एक संशोधन, डॉकरफाइल में एक निर्देश द्वारा दर्शाया गया है। दक्षता के लिए बिल्ड के दौरान लेयर को कैश किया जाता है।
  • ऑर्केस्ट्रेशन (Orchestration): कंटेनर की स्वचालित व्यवस्था, समन्वय और प्रबंधन, आमतौर पर डॉकर स्वार्म या कुबेरनेट्स जैसे उपकरणों का उपयोग करके।
  • ब्रिज नेटवर्क (Bridge Network): डॉकर कंटेनर के लिए डिफ़ॉल्ट नेटवर्क ड्राइवर, जो एक ही होस्ट पर कंटेनरों को संवाद करने की अनुमति देता है।
  • बाइंड माउंट (Bind Mount): एक होस्ट फ़ाइल या डायरेक्टरी का एक कंटेनर फ़ाइल या डायरेक्टरी में मानचित्रण।
  • डॉकर स्वार्म (Docker Swarm): डॉकर का मूल क्लस्टरिंग और ऑर्केस्ट्रेशन समाधान।
  • कंटेनर लाइफसाइकिल (Container Lifecycle): विभिन्न अवस्थाएँ जिनमें एक कंटेनर हो सकता है, निर्माण से लेकर विलोपन तक।
  • डॉकर सॉकेट (Docker Socket): यूनिक्स सॉकेट जिस पर डॉकर डेमन डिफ़ॉल्ट रूप से सुनता है।
  • मल्टी-स्टेज बिल्ड (Multi-stage Build): एक डॉकरफाइल पैटर्न जो इमेज के आकार और सुरक्षा को अनुकूलित करने के लिए कई FROM कथनों का उपयोग करता है।
  • स्वास्थ्य जाँच (Health Check): एक कमांड जिसे डॉकर यह निर्धारित करने के लिए चलाता है कि क्या कोई कंटेनर स्वस्थ है।
  • डॉकर कॉन्टेक्स्ट (Docker Context): फ़ाइलों और डायरेक्टरी का सेट जो बिल्ड प्रक्रिया के दौरान डॉकर डेमन को भेजे जाते हैं।
Categories:
Dockerसमर्पित सर्वर
Tags:
# Docker# कंटेनरीकरण# डेडिकेटेड सर्वर