HELPER VPS

VPS पर Docker इंस्टॉल, Ubuntu, Debian, AlmaLinux और Compose

Docker की आधिकारिक रिपॉज़िटरी से इंस्टॉल करें, तो लेटेस्ट Docker Engine और Compose प्लगइन मिलते हैं, और बाद के अपडेट भी एक सिस्टम अपडेट से हो जाते हैं। हर ऑपरेटिंग सिस्टम की कमांड और इंस्टॉल के बाद ज़रूर करने लायक सेटिंग क्रम से दी गई हैं।

सबसे तेज़ तरीका: Docker इमेज से सर्वर बनाएँ

नया सर्वर बना रहे हैं, तो इमेज सूची में Docker चुनना सबसे तेज़ है। Ubuntu 24.04 LTS पर Docker Engine और Docker Compose इंस्टॉल हालत में शुरू होता है, और लॉग इन करते ही docker compose up चला सकते हैं। ऐप की जानकारी और सुझाया साइज़ Docker VPS पेज पर है।

पहले से चल रहे सर्वर में Docker जोड़ना हो, या Debian, AlmaLinux जैसा दूसरा ऑपरेटिंग सिस्टम इस्तेमाल करना हो, तो नीचे के क्रम से खुद इंस्टॉल करें। सभी कमांड root से कनेक्ट होने के आधार पर दी गई हैं। सामान्य यूज़र से कनेक्ट हैं, तो कमांड के आगे sudo लगाएँ।

इंस्टॉल से पहले क्या जाँचें

Docker किसी भी साइज़ के सर्वर पर चलता है। कुछ कंटेनर चलाने वाले पर्सनल प्रोजेक्ट्स के लिए, सबसे छोटा 12GB जनरल प्लान काफ़ी है; डेटाबेस, वेब सर्वर और कैश एक साथ चलाने के लिए, 24GB या अधिक आपको जगह देता है। यदि आप बहुत सारी इमेज डाउनलोड और बिल्ड करते हैं, तो तेज़ डिस्क वाला NVMe VPS एक स्पष्ट अंतर लाता है।

ऑपरेटिंग सिस्टम की रिपॉज़िटरी वाले पुराने Docker पैकेज हों, तो पहले उन्हें हटाएँ ताकि आधिकारिक पैकेज से न मिलें। जो पैकेज इंस्टॉल नहीं हैं, वे छूट जाते हैं, इसलिए कमांड वैसी ही चला सकते हैं।

Ubuntu, Debian
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do apt remove -y $pkg; done

Ubuntu 24.04 पर Docker इंस्टॉल

स्टेप 1. रिपॉज़िटरी की और एड्रेस जोड़ें

Ubuntu 24.04
apt update
apt install -y ca-certificates curl
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" > /etc/apt/sources.list.d/docker.list

स्टेप 2. Docker Engine और Compose इंस्टॉल करें

Ubuntu 24.04
apt update
apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

इंस्टॉल पूरा होते ही Docker सर्विस अपने आप चालू हो जाती है, और सर्वर रीस्टार्ट होने पर भी साथ चालू होती है। यही कमांड Ubuntu 22.04 और 26.04 पर भी वैसी ही चलती हैं। रिपॉज़िटरी एड्रेस में जाने वाला वर्ज़न नाम /etc/os-release से अपने आप पढ़ा जाता है।

Debian 13 पर Docker इंस्टॉल

Debian में क्रम Ubuntu जैसा ही है, बस रिपॉज़िटरी एड्रेस linux/debian हो जाता है। Debian 12 पर भी यही कमांड इस्तेमाल करें।

Debian 13
apt update
apt install -y ca-certificates curl
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian $(. /etc/os-release && echo "$VERSION_CODENAME") stable" > /etc/apt/sources.list.d/docker.list
apt update
apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

AlmaLinux 10 पर Docker इंस्टॉल

AlmaLinux और Rocky Linux, Docker की RHEL रिपॉज़िटरी इस्तेमाल करते हैं। पहले से मौजूद Podman से टकराव न हो, इसलिए पहले उसे हटाकर इंस्टॉल करें। AlmaLinux 9 और Rocky Linux 9, 10 पर भी यही कमांड हैं।

AlmaLinux 10
dnf remove -y podman buildah runc
dnf -y install dnf-plugins-core
dnf config-manager --add-repo https://download.docker.com/linux/rhel/docker-ce.repo
dnf -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
systemctl enable --now docker

पहली बार इंस्टॉल करते समय रिपॉज़िटरी साइनिंग की स्वीकार करने के बारे में पूछे, तो y दबाएँ। RHEL परिवार में इंस्टॉल के बाद सर्विस अपने आप चालू नहीं होती, इसलिए आख़िरी लाइन की systemctl enable --now docker से अभी चालू करें और बूट पर भी चालू होने दें।

इंस्टॉल की जाँच और पहला कंटेनर

नीचे की कमांड से एक बार टेस्ट कंटेनर चलाकर देखें। Hello from Docker से शुरू होने वाला संदेश दिखे, तो इंजन, इमेज डाउनलोड और कंटेनर चलना, सब ठीक है। --rm लगाने से रन पूरा होते ही कंटेनर तुरंत हट जाता है।

टर्मिनल
docker run --rm hello-world
docker compose version

सामान्य यूज़र से भी Docker इस्तेमाल करना हो, तो उस यूज़र को docker ग्रुप में जोड़ें और फिर से लॉग इन करें। docker ग्रुप के पास root जितने अधिकार होते हैं, इसलिए सिर्फ़ भरोसेमंद यूज़र को ही जोड़ें।

टर्मिनल
usermod -aG docker username

Docker Compose से सर्विस चलाएँ

Compose कंटेनर सेटिंग एक YAML फ़ाइल में लिखकर एक लाइन से चलाने का तरीका है। सर्वर बदलें या नया बनाएँ, बस वही फ़ाइल हो तो वही माहौल फिर से तैयार हो जाता है। उदाहरण के लिए, एक Nginx वेब सर्वर चलाने वाली फ़ाइल ऐसी दिखती है।

टर्मिनल
mkdir -p /opt/web && cd /opt/web
cat > compose.yaml <<'EOF'
services:
  web:
    image: nginx:stable
    ports:
      - "80:80"
    volumes:
      - ./html:/usr/share/nginx/html:ro
    restart: unless-stopped
EOF
docker compose up -d

ब्राउज़र में http://YOUR_SERVER_IP खोलें, तो Nginx स्क्रीन दिखती है। html फ़ोल्डर में index.html डालें, तो वही फ़ाइल दिखेगी। अक्सर इस्तेमाल होने वाली नीचे की चार कमांड काफ़ी हैं।

  • docker compose ps: अभी चल रहे कंटेनर और पोर्ट दिखाता है।
  • docker compose logs -f: रियल-टाइम लॉग दिखाता है। Ctrl+C से बाहर आएँ।
  • docker compose pull && docker compose up -d: नई इमेज लेकर कंटेनर को नए वर्ज़न पर बदलता है।
  • docker compose down: कंटेनर रोककर हटाता है। वॉल्यूम का डेटा वैसा ही रहता है।

restart: unless-stopped लिख दें, तो सर्वर रीस्टार्ट होने पर कंटेनर भी अपने आप फिर से चलते हैं। सिर्फ़ आपके रोके गए कंटेनर रुके रहते हैं।

फ़ायरवॉल और पोर्ट पब्लिक करने की सेटिंग

Docker, ports: से पब्लिक किए पोर्ट सीधे फ़ायरवॉल नियमों (iptables) में डालकर खोलता है। इसलिए ufw में अलाउ न किए पोर्ट भी ports: में लिखने पर बाहर से एक्सेस होते हैं। जिन डेटाबेस या मैनेजमेंट स्क्रीन को बाहर दिखाने की ज़रूरत नहीं, उन्हें नीचे की तरह सिर्फ़ 127.0.0.1 पर बाँधें, तो वे सिर्फ़ सर्वर के अंदर से एक्सेस होंगे।

compose.yaml
    ports:
      - "127.0.0.1:5432:5432"

वेब सर्विस के लिए सिर्फ़ 80 और 443 पोर्ट पब्लिक करें, और बाकी सर्विस एक ही Compose नेटवर्क में सर्विस नाम से एक-दूसरे को बुलाएँ, तो सब साफ़-सुथरा रहता है। पूरे सर्वर के बुनियादी फ़ायरवॉल के लिए बुनियादी फ़ायरवॉल गाइड के अनुसार सिर्फ़ SSH, HTTP और HTTPS खोलें।

लॉग और डिस्क मैनेजमेंट

कंटेनर लॉग अलग से सेट न करें तो लगातार जमा होते रहते हैं। /etc/docker/daemon.json में नीचे की तरह local लॉग ड्राइवर तय करें, तो लॉग कंप्रेस होते हैं और तय साइज़ तक ही रखे जाते हैं। सेव करके systemctl restart docker चलाएँ, नए बनने वाले कंटेनर से यह लागू होता है।

/etc/docker/daemon.json
{
  "log-driver": "local"
}

न इस्तेमाल होने वाली इमेज और रुके हुए कंटेनर भी डिस्क लेते हैं। docker system df से इस्तेमाल देखें, और docker image prune -a से अभी न इस्तेमाल होने वाली इमेज हटाएँ। डेटा बढ़े, तो सर्वर में NVMe ब्लॉक डिस्क जोड़कर Docker डेटा फ़ोल्डर के रूप में इस्तेमाल करने का तरीका भी है।

डेटा सुरक्षित रखना और आगे के स्टेप

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

Docker से WordPress चलाने वाली Compose फ़ाइल WordPress इंस्टॉल गाइड में है। कई ऐप स्क्रीन से डिप्लॉय करना और HTTPS सर्टिफ़िकेट तक अपने आप लगाना चाहें, तो Coolify या Dokploy इमेज से सर्वर बनाकर देखें। सिर्फ़ कंटेनर के लिए अच्छे साइज़ कंटेनर VPS पर दिए गए हैं।

साथ में देखने लायक गाइड

इस गाइड के बाद करने लायक सेटिंग।

सभी गाइड देखें