उबंटू पर Docker का उपयोग कैसे करें: इंस्टॉलेशन, इमेजेज, Dockerfile और ऑप्टिमाइज़ेशन के लिए पूर्ण गाइड

.## 1. परिचय

目次

Docker क्या है?

Docker एक प्लेटफ़ॉर्म है जो कंटेनर‑आधारित वर्चुअलाइज़ेशन तकनीक का उपयोग करके एप्लिकेशन को कुशलतापूर्वक विकसित, वितरित और चलाता है। पारंपरिक वर्चुअल मशीनों (VMs) के विपरीत, कंटेनर होस्ट OS कर्नेल को साझा करते हैं, जिससे तेज़ स्टार्ट‑अप और कम संसाधन खपत संभव होती है।

Ubuntu पर Docker उपयोग करने के लाभ

Ubuntu उन Linux वितरणों में से एक है जो Docker के साथ मजबूत संगतता रखता है। मुख्य कारण इस प्रकार हैं:

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

इस लेख में आप क्या सीखेंगे

यह गाइड निम्नलिखित विषयों को क्रमबद्ध रूप से समझाता है:

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

यह सामग्री शुरुआती और उन्नत उपयोगकर्ताओं दोनों के लिए उपयोगी है, इसलिए किसी भी चरण पर इसका संदर्भ ले सकते हैं।

2. Ubuntu पर Docker स्थापित करना

आधिकारिक रिपॉजिटरी का उपयोग करके Docker स्थापित करना

Ubuntu में आप आधिकारिक रिपॉजिटरी के माध्यम से आसानी से Docker स्थापित कर सकते हैं। नीचे दिए गए चरणों का पालन करके अपना वातावरण सेट करें।

1. मौजूदा Docker पैकेज हटाएँ

Ubuntu में docker.io नामक पैकेज मौजूद हो सकता है, जो संभवतः पुराना संस्करण है। नवीनतम Docker स्थापित करने से पहले इसे हटाएँ।

sudo apt remove docker docker-engine docker.io containerd runc

2. आवश्यक पैकेज स्थापित करें

स्थापना से पहले निर्भरता पैकेज स्थापित करें।

sudo apt update
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common

3. आधिकारिक Docker रिपॉजिटरी जोड़ें

Docker की आधिकारिक GPG कुंजी जोड़ें और रिपॉजिटरी को कॉन्फ़िगर करें।

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
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

4. Docker स्थापित करें

रिपॉजिटरी जोड़ने के बाद Docker स्थापित करें।

sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io

5. स्थापना की पुष्टि करें

संस्करण जानकारी प्रदर्शित करके जाँचें कि Docker सही ढंग से स्थापित हुआ है या नहीं।

docker --version

स्थापना के बाद प्रारंभिक सेटअप

1. Docker सेवा शुरू करें और सक्षम करें

Docker सेवा को शुरू करें और बूट पर स्वचालित रूप से शुरू होने के लिए सक्षम करें।

sudo systemctl start docker
sudo systemctl enable docker

2. गैर-रूट उपयोगकर्ताओं को Docker चलाने की अनुमति दें

डिफ़ॉल्ट रूप से केवल रूट उपयोगकर्ता Docker चला सकता है। सामान्य उपयोगकर्ताओं को Docker कमांड चलाने की अनुमति दें।

sudo usermod -aG docker $USER

परिवर्तनों को लागू करने के लिए लॉग आउट करें और फिर से लॉग इन करें।

3. Docker संचालन का परीक्षण करें

सामान्य उपयोगकर्ता खाते से hello‑world कंटेनर चलाएँ।

docker run hello-world

यदि आउटपुट में “Hello from Docker!” शामिल है, तो स्थापना सफल रही।

3. Docker इमेज के बुनियादी संचालन

Docker इमेज क्या है?

Docker इमेज कंटेनर बनाने के लिए एक टेम्पलेट के रूप में कार्य करती है। Ubuntu‑आधारित Docker इमेज का उपयोग करके आप जल्दी से Ubuntu वातावरण लॉन्च कर सकते हैं।

Docker Hub से Ubuntu इमेज खींचना

Docker Hub कई आधिकारिक Docker इमेज प्रदान करता है। Ubuntu इमेज डाउनलोड करने के लिए चलाएँ:

docker pull ubuntu

कंटेनर शुरू करना और रोकना

डाउनलोड की गई Ubuntu इमेज का उपयोग करके कंटेनर शुरू करें:

docker run -it ubuntu bash

यह Ubuntu कंटेनर के अंदर एक शेल खोलता है, जिससे आप उसके अंदर काम कर सकें।

कंटेनरों की सूची

चल रहे कंटेनरों को प्रदर्शित करें:

docker ps

सभी कंटेनरों को प्रदर्शित करें, जिसमें बंद किए गए भी शामिल हैं:

docker ps -a

कंटेनरों को रोकना और हटाना

एक चल रहे कंटेनर को रोकें:

docker stop [container ID or name]

एक अनावश्यक कंटेनर को हटाएं:

docker rm [container ID or name]

Docker इमेजों का प्रबंधन

डाउनलोड की गई Docker इमेजों की सूची:

docker images

एक इमेज हटाएं:

docker rmi [image ID]

4. Dockerfile के साथ कस्टम इमेज बनाना

Dockerfile क्या है?

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

Dockerfile की बेसिक सिंटैक्स

एक Dockerfile आमतौर पर निम्नलिखित कमांडों को शामिल करता है:

CommandDescription
FROMSpecifies the base image
RUNExecutes commands to build the image
COPYCopies files into the container
WORKDIRSets the working directory
CMDDefault command executed when the container starts
ENTRYPOINTDefines the entry point of the container

एक कस्टम Ubuntu-आधारित इमेज बनाना

नीचे दिए गए चरणों का पालन करके एक कस्टम Ubuntu-आधारित Docker इमेज बनाएं।

1. एक वर्किंग डायरेक्टरी बनाएं

सबसे पहले, एक नई प्रोजेक्ट डायरेक्टरी बनाएं और उसमें चले जाएं।

mkdir my-ubuntu-image
cd my-ubuntu-image

2. एक Dockerfile बनाएं

डायरेक्टरी के अंदर एक Dockerfile बनाएं और निम्नलिखित सामग्री लिखें:

# Base Ubuntu official image
FROM ubuntu:latest

# Maintainer information (optional)
LABEL maintainer="your-email@example.com"

# Update package list and install basic tools
RUN apt update && apt install -y curl vim git

# Set working directory
WORKDIR /workspace

# Default command when the container starts
CMD ["bash"]

3. Docker इमेज बनाएं

अपने Dockerfile से एक कस्टम इमेज बनाएं:

docker build -t my-ubuntu-image .

-t विकल्प इमेज को एक नाम असाइन करता है।

4. इमेज की जाँच करें

अपनी नई बनी इमेज की जाँच करें:

docker images

5. एक कंटेनर चलाएं

कस्टम इमेज से एक कंटेनर शुरू करें:

docker run -it my-ubuntu-image

यह इमेज curl और vim जैसे टूल्स को शामिल करती है।

5. Ubuntu कंटेनरों में जापानी वातावरण सेटअप करना

डिफ़ॉल्ट Ubuntu इमेज एक अंग्रेजी वातावरण का उपयोग करती है। जापानी का उपयोग करने के लिए, अतिरिक्त कॉन्फ़िगरेशन की आवश्यकता है।

जापानी Locale सेट करना

एक Ubuntu कंटेनर में जापानी डिस्प्ले और इनपुट को सक्षम करने के लिए, जापानी locale इंस्टॉल करें।

1. आवश्यक पैकेज इंस्टॉल करें

apt update
apt install -y language-pack-ja locales

2. Locale कॉन्फ़िगर करें

Locale उत्पन्न करें और लागू करें:

locale-gen ja_JP.UTF-8
update-locale LANG=ja_JP.UTF-8

3. सेटिंग्स लागू करें

export LANG=ja_JP.UTF-8

जापानी इनपुट सेटअप करना

टर्मिनल में जापानी अक्षरों को इनपुट करने के लिए, ibus-mozc इंस्टॉल करें:

apt install -y ibus-mozc

यदि GUI एप्लिकेशन्स का उपयोग कर रहे हैं, तो निम्नलिखित पर्यावरण चर जोड़ें:

export GTK_IM_MODULE=ibus
export XMODIFIERS=@im=ibus
export QT_IM_MODULE=ibus

GUI एप्लिकेशन्स का उपयोग करना

Docker कंटेनर के अंदर GUI एप्लिकेशन्स चलाने के लिए, होस्ट मशीन पर एक X सर्वर का उपयोग करें।

X11 सक्षम करके कंटेनर चलाएं:

docker run -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix my-ubuntu-image

6. Docker इमेजों को ऑप्टिमाइज़ और न्यूनतम करना

Docker इमेजों को ऑप्टिमाइज़ किया जा सकता है ताकि कंटेनर स्टार्टअप स्पीड सुधरे और स्टोरेज उपयोग कम हो। यहाँ हल्की इमेज बनाने के लिए कई तकनीकें हैं।

एक हल्की Ubuntu-आधारित इमेज कैसे बनाएं

डिफ़ॉल्ट ubuntu:latest इमेज अपेक्षाकृत बड़ी है। ubuntu:minimal जैसे अधिक हल्के विकल्प का उपयोग करने से कंटेनर साइज़ कम होता है।

FROM ubuntu:minimal

एक अन्य विकल्प Alpine Linux का उपयोग करना है, जो Ubuntu से काफी छोटा है।

FROM alpine:latest
RUN apk add --no-cache bash curl

Alpine का उपयोग करने से इमेज साइज़ कई सौ मेगाबाइट्स कम हो सकती है।

अनावश्यक फाइलों को हटाकर इमेज साइज़ कम करना

आप apt-get द्वारा बनाई गई अनावश्यक कैश फाइलों को हटाकर इमेज आकार को कम कर सकते हैं।

RUN apt update && apt install -y curl vim \
    && apt clean \
    && rm -rf /var/lib/apt/lists/*

विशेष रूप से, rm -rf /var/lib/apt/lists/* कमांड पैकेज लिस्ट और अप्रयुक्त डेटा को हटाती है।

मल्टी-स्टेज बिल्ड्स का उपयोग

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

FROM ubuntu as builder
RUN apt update && apt install -y gcc

FROM ubuntu:minimal
COPY --from=builder /usr/bin/gcc /usr/bin/gcc

इस तरह, आप अंतिम इमेज में डेवलपमेंट टूल्स को शामिल होने से बचते हैं, जिससे बहुत छोटा फुटप्रिंट प्राप्त होता है।

7. व्यावहारिक उदाहरण: Ubuntu कंटेनर्स में एप्लिकेशन डेवलपमेंट

यह सेक्शन Ubuntu कंटेनर्स के अंदर डेवलपमेंट एनवायरनमेंट सेटअप करने का तरीका पेश करता है।

Python डेवलपमेंट एनवायरनमेंट सेटअप करना

Ubuntu कंटेनर में Python डेवलपमेंट एनवायरनमेंट सेटअप करने के लिए निम्नलिखित Dockerfile बनाएं:

FROM ubuntu:latest
RUN apt update && apt install -y python3 python3-pip
CMD ["python3"]

इमेज बिल्ड करें और कंटेनर चलाएं:

docker build -t python-dev .
docker run -it python-dev

यह एनवायरनमेंट आपको स्क्रिप्ट डेवलपमेंट और टेस्टिंग के लिए python3 कमांड का उपयोग करने की अनुमति देता है।

Node.js डेवलपमेंट एनवायरनमेंट सेटअप करना

Node.js डेवलपमेंट एनवायरनमेंट सेटअप करने के लिए, निम्नलिखित Dockerfile का उपयोग करें:

FROM ubuntu:latest
RUN apt update && apt install -y nodejs npm
CMD ["node"]

कंटेनर बिल्ड और चलाएं:

docker build -t node-dev .
docker run -it node-dev

यह एनवायरनमेंट node कमांड के साथ JavaScript एक्जीक्यूशन और एप्लिकेशन डेवलपमेंट को सक्षम बनाता है।

8. FAQ और समस्या निवारण

Docker का उपयोग विभिन्न समस्याओं का कारण बन सकता है। नीचे सामान्य प्रश्न और सामान्य समाधान दिए गए हैं।

Docker और वर्चुअल मशीन्स के बीच अंतर

  • Docker : होस्ट OS कर्नेल को शेयर करता है, जिससे यह हल्का होता है और कंटेनर स्टार्टअप तेज होता है।
  • वर्चुअल मशीन्स (VMs) : प्रत्येक VM में अपना OS शामिल होता है, जिससे संसाधन उपयोग अधिक होता है और स्टार्टअप धीमा होता है।

Docker संसाधन अनुकूलन में उत्कृष्ट है और डेवलपमेंट एनवायरनमेंट्स और ऑटोमेटेड डिप्लॉयमेंट के लिए उपयुक्त है।

Ubuntu कंटेनर्स में डेटा को स्थायी रखना

कंटेनर रुकने के बाद भी डेटा को बनाए रखने के लिए, वॉल्यूम माउंट्स का उपयोग करें:

docker run -v my_data:/data ubuntu

भले ही कंटेनर हटा दिया जाए, my_data वॉल्यूम में संग्रहीत डेटा को पुन: उपयोग किया जा सकता है।

सामान्य त्रुटियां और समाधान

1. permission denied त्रुटि

यदि Docker चलाने की कोशिश करते समय permission denied दिखाई दे, तो आपका उपयोगकर्ता docker ग्रुप का सदस्य नहीं हो सकता।

उपयोगकर्ता को Docker ग्रुप में जोड़ें:

sudo usermod -aG docker $USER

परिवर्तन लागू करने के लिए लॉग आउट करें और फिर लॉग इन करें।

2. image not found त्रुटि

यदि कोई इमेज Docker Hub से हटा दी गई है, तो पुल करते समय एक नया टैग निर्दिष्ट करें:

docker pull ubuntu:22.04

एक स्पष्ट संस्करण निर्दिष्ट करने से सही इमेज प्राप्त होने की सुनिश्चितता होती है।