Docker के बारे में
Docker एक कंटेनर इंजन है। यह किसी एप्लिकेशन और उसकी निर्भरताओं को एक इमेज में पैक करता है और फिर होस्ट के कर्नेल पर उसे अलग-थलग वातावरण में चलाता है। डेवलपर इसका उपयोग इसलिए करते हैं कि लोकल मशीन और प्रोडक्शन में एक जैसा वातावरण मिले। छोटी टीमें इसकी मदद से एक ही मशीन पर कई सर्विस चलाती हैं, और उनकी निर्भरताएँ आपस में टकराती नहीं।
डिलीवरी के समय आपके Linux VPS में (Debian 12, Debian 13, Ubuntu 22.04 या 24.04, और नीचे बताई गई सीमाओं के साथ Ubuntu 20.04) Docker के आधिकारिक apt रिपॉजिटरी से इंस्टॉल किया हुआ Docker Engine मिलता है। docker-ce, docker-ce-cli, containerd.io, docker-buildx-plugin और docker-compose-plugin पैकेज मौजूद होते हैं, और docker तथा containerd सर्विस बूट पर चालू रहने के लिए सक्षम होती हैं।
इंस्टॉल से पहले रिपॉजिटरी की साइनिंग कुंजी का फ़िंगरप्रिंट जाँचा जाता है। रेसिपी के अंत में एक hello-world कंटेनर चलाया जाता है, ताकि पुष्टि हो सके कि डेमन जवाब दे रहा है। इसके बाद सर्वर आपके हाथ में है: डिफ़ॉल्ट रूप से किसी यूज़र को docker ग्रुप में नहीं जोड़ा जाता, और आपकी ओर से कोई एप्लिकेशन भी तैनात नहीं किया जाता।
Docker के साथ आप क्या कर सकते हैं
Docker का आधिकारिक apt रिपॉजिटरी
पैकेज download.docker.com से आते हैं, और साइनिंग कुंजी का फ़िंगरप्रिंट जाँचा जाता है। अपडेट बाकी सिस्टम की तरह apt से ही होते हैं।
Compose और Buildx शामिल
Compose प्लगइन
docker compose(बिना हाइफ़न) से चलता है और Buildx से आप अपनी इमेज बनाते हैं। पहले लॉगिन से ही आप मल्टी-सर्विस स्टैक तैनात कर सकते हैं।लॉग रोटेशन पहले से सेट
अगर
/etc/docker/daemon.jsonमौजूद नहीं है, तो रेसिपी उसेjson-fileड्राइवर, प्रति फ़ाइल 10 MB और 3 फ़ाइलों की सीमा के साथ लिखती है। इससे कंटेनर लॉग चुपचाप डिस्क नहीं भरते।टकराने वाले पैकेज हटाए गए
docker.io,podman-docker,containerdऔरruncजैसे अनौपचारिक पैकेज इंस्टॉल से पहले हटा दिए जाते हैं। इससे अलग-अलग वर्ज़न के मिश्रण से डेमन के फ़ेल होने की समस्या नहीं आती।root जैसी पहुँच आपके नियंत्रण में
dockerग्रुप में कोई खाता नहीं जोड़ा जाता, क्योंकि यह ग्रुप root के बराबर पहुँच देता है। यह विशेषाधिकार किसे मिले, यह आप तय करते हैं।पढ़ने योग्य इंस्टॉल लॉग
हर चरण
/var/log/docker-install.logमें दर्ज होता है, और/var/lib/docker-install.doneफ़ाइल बताती है कि रेसिपी अंत तक पूरी हुई।
Docker के साथ शुरुआत करें
ऑर्डर से प्रोडक्शन तक कुछ ही मिनटों में।
- 1
Docker चुनकर VPS ऑर्डर करें
पेरिस या फ्रैंकफर्ट में Linux VPS चुनें, Debian 12, Debian 13, Ubuntu 22.04 या 24.04 में से कोई सिस्टम लें, और ऑर्डर फ़ॉर्म के "Applications" टैब में Docker पर टिक करें।
- 2
कनेक्ट करें और इंस्टॉल जाँचें
सर्वर मिलने के बाद मिली जानकारी से SSH के ज़रिए कनेक्ट करें। इंस्टॉल पहले बूट पर चलता है, इसलिए अगर मार्कर फ़ाइल अभी नहीं बनी है तो थोड़ा रुकें और लॉग देखते रहें।
Bashssh USER@SERVER_IP cat /var/lib/docker-install.done tail -n 20 /var/log/docker-install.log - 3
पहला कंटेनर चलाएँ
पहले वर्ज़न देखें, फिर एक टेस्ट वेब सर्वर शुरू करें। पोर्ट केवल 127.0.0.1 पर पब्लिश होता है, इसलिए टेस्ट के दौरान वह इंटरनेट पर खुला नहीं रहता।
Bashdocker --version && docker compose version docker run -d --name web -p 127.0.0.1:8080:80 nginx curl -I http://127.0.0.1:8080 - 4
प्रोडक्शन से पहले सुरक्षित करें
अपनी सर्विस के आगे एक रिवर्स प्रॉक्सी (Caddy, Traefik या Nginx) रखें, जो YOUR_DOMAIN को HTTPS पर संभाले, और इंटरनेट पर सिर्फ़ पोर्ट 80 और 443 पब्लिश करें। बाकी पोर्ट 127.0.0.1 पर रखें, क्योंकि Docker के पब्लिश किए पोर्ट ufw को बायपास कर देते हैं। अंत में अपने वॉल्यूम और compose फ़ाइलों का बैकअप लें।
Bashdocker volume ls docker compose up -d
Docker के उपयोग
कई अलग-थलग सर्विस होस्ट करना
PostgreSQL डेटाबेस, वेब एप्लिकेशन और मॉनिटरिंग टूल, हर एक अपने कंटेनर में चलता है और सब एक ही
compose.yamlफ़ाइल में वर्णित होते हैं। आप उन्हें अलग-अलग अपडेट या रीस्टार्ट कर सकते हैं।सेल्फ़-होस्टेड एप्लिकेशन तैनात करना
n8n, Nextcloud, Gitea और Uptime Kuma जैसे कई ओपन सोर्स प्रोजेक्ट Docker इमेज और Compose का उदाहरण देते हैं। VPS बिना किसी पूर्व तैयारी के इन्हें चलाने को तैयार मिलता है।
इमेज बनाना और टेस्ट करना
Buildx से आप इमेज एक अलग रिमोट मशीन पर बना सकते हैं, और अपने वर्कस्टेशन पर बोझ नहीं पड़ता। हल्की CI पाइपलाइन या इंटीग्रेशन टेस्ट के लिए यह काम आता है।
स्टेजिंग में प्रोडक्शन दोहराना
उसी Docker वर्ज़न और उन्हीं Compose फ़ाइलों वाला दूसरा VPS आपको प्रोडक्शन के करीब का टेस्ट वातावरण देता है, और उसका प्रबंधन भी कम मेहनत का रहता है।
Docker से जुड़े सामान्य प्रश्न
रेसिपी Docker के आधिकारिक apt रिपॉजिटरी से docker-ce, docker-ce-cli, containerd.io, docker-buildx-plugin और docker-compose-plugin इंस्टॉल करती है। docker और containerd सर्विस बूट पर चालू रहने के लिए सक्षम होती हैं। Compose v2 में कमांड docker compose है, docker-compose नहीं।
Docker के बारे में और जानें
फ़ायरवॉल और पब्लिश किए गए पोर्ट
यह सबसे आम जाल है। जब आप -p 8080:80 से कोई पोर्ट पब्लिश करते हैं, तो Docker अपने iptables नियम लिखता है और ट्रैफ़िक ufw या firewalld के नियमों से पहले गुज़र जाता है। इसलिए ufw deny 8080 से कुछ नहीं रुकता।
दो भरोसेमंद तरीके हैं: पोर्ट को लोकल इंटरफ़ेस से बाँधें (-p 127.0.0.1:8080:80) और सर्विस को रिवर्स प्रॉक्सी के ज़रिए उपलब्ध कराएँ, या DOCKER-USER चेन में फ़िल्टर करें, जिसे Docker अपने नियमों से पहले देखता है। पहला तरीका आसान है और ज़्यादातर मामलों में काफ़ी है।
docker ग्रुप और sudo
docker ग्रुप का सदस्य होना मशीन पर root अधिकार रखने जैसा है, क्योंकि कंटेनर होस्ट का फ़ाइल सिस्टम माउंट कर सकता है। रेसिपी किसी को इस ग्रुप में नहीं जोड़ती। अगर आप सामान्य अधिकार वाले खाते से काम करना चाहते हैं, तो उसे खुद जोड़ें और फिर दोबारा लॉगिन करें।
Bashsudo usermod -aG docker USER
कंटेनर लॉग
डिलीवरी के समय लिखी गई /etc/docker/daemon.json फ़ाइल हर कंटेनर को 10 MB की 3 फ़ाइलों तक सीमित करती है। यह फ़ाइल तभी बनाई जाती है जब वह पहले से मौजूद न हो। ये मान बदलने के लिए फ़ाइल संपादित करें और डेमन रीस्टार्ट करें। नई सेटिंग सिर्फ़ रीस्टार्ट के बाद बने कंटेनरों पर लागू होती है।
Bashsudo systemctl restart docker
अपडेट
Docker रिपॉजिटरी /etc/apt/sources.list.d/docker.sources में दर्ज है, इसलिए नए वर्ज़न सामान्य apt अपडेट के साथ आते हैं। अपडेट ऐसे समय पर करें जब डेमन का रीस्टार्ट स्वीकार्य हो, क्योंकि live-restore चालू न होने पर इससे आपके कंटेनर रुक सकते हैं।
Bashsudo apt update && sudo apt install --only-upgrade docker-ce docker-ce-cli containerd.io
Ubuntu 20.04
Docker अब Ubuntu 20.04 को आधिकारिक रूप से सपोर्ट नहीं करता। फिर भी, अगर Docker रिपॉजिटरी अब भी इस वर्ज़न के लिए पैकेज देती है, तो रेसिपी इंस्टॉल करने की कोशिश करती है और लॉग में चेतावनी दर्ज करती है। प्रोडक्शन सर्वर के लिए Ubuntu 22.04, Ubuntu 24.04, Debian 12 या Debian 13 चुनें, जो सभी सपोर्टेड हैं।
बैकअप
इमेज दोबारा डाउनलोड हो जाती हैं, आपका डेटा नहीं। नामित वॉल्यूम, माउंट की गई डायरेक्टरी और अपनी compose.yaml फ़ाइलों का, उनके एनवायरनमेंट वेरिएबल के साथ, बैकअप लें। डेटाबेस के लिए चालू वॉल्यूम की कॉपी के बजाय लॉजिकल एक्सपोर्ट (pg_dump, mysqldump) बेहतर है।
