उबंटू पर Docker इमेज बनाना और प्रबंधित करने के लिए संपूर्ण गाइड | इंस्टॉलेशन, ऑप्टिमाइज़ेशन और ट्रबलशूटिंग

目次

1. परिचय

डॉकर क्या है?

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

उबंटू पर डॉकर का उपयोग करने के लाभ

उबंटू लिनक्स वितरणों में से एक है जो डॉकर के साथ अत्यधिक संगत है। मुख्य लाभ निम्नलिखित हैं:

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

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

यह लेख आपको निम्नलिखित विषयों पर चरणबद्ध तरीके से मार्गदर्शन प्रदान करेगा:

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

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

2. उबंटू पर डॉकर इंस्टॉल करना

आधिकारिक रिपॉजिटरी का उपयोग करके डॉकर इंस्टॉल करना

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

1. मौजूदा डॉकर पैकेज हटाएं

उबंटू डिफ़ॉल्ट रूप से docker.io नामक एक पैकेज प्रदान करता है, लेकिन यह पुराना संस्करण हो सकता है। इसे पहले हटाना अनुशंसित है।

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. आधिकारिक डॉकर रिपॉजिटरी जोड़ें

डॉकर की आधिकारिक 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. डॉकर इंस्टॉल करें

रिपॉजिटरी जोड़ने के बाद, डॉकर इंस्टॉल करें।

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

5. इंस्टॉलेशन सत्यापित करें

डॉकर के सही ढंग से इंस्टॉल होने की जांच करने के लिए, संस्करण जानकारी प्रदर्शित करें।

docker --version

इंस्टॉलेशन के बाद प्रारंभिक सेटअप

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

डॉकर सेवा शुरू करें और इसे सिस्टम स्टार्टअप पर स्वचालित रूप से चलने के लिए कॉन्फ़िगर करें।

sudo systemctl start docker
sudo systemctl enable docker

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

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

sudo usermod -aG docker $USER

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

3. डॉकर का परीक्षण करें

डॉकर के सही ढंग से काम करने की जांच करने के लिए hello-world कंटेनर चलाएं।

docker run hello-world

यदि आपको “Hello from Docker!” संदेश दिखाई देता है, तो इंस्टॉलेशन सफल रहा है।

3. डॉकर इमेज के साथ बेसिक ऑपरेशंस

डॉकर इमेज क्या है?

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

डॉकर हब से उबंटू इमेज डाउनलोड करना

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

docker pull ubuntu

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

आप नीचे दिए गए कमांड का उपयोग करके डाउनलोड किए गए Ubuntu इमेज से एक कंटेनर शुरू कर सकते हैं:

docker run -it ubuntu bash

यह कमांड Ubuntu कंटेनर के भीतर एक शेल खोलता है, जिससे आप सीधे उसके साथ इंटरैक्ट कर सकते हैं।

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

कौन से कंटेनर वर्तमान में चल रहे हैं, यह जांचने के लिए यह कमांड उपयोग करें:

docker ps

सभी कंटेनरों को, बंद हुए सहित, दिखाने के लिए -a विकल्प जोड़ें:

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 के साथ कस्टम Docker इमेज बनाना

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
CMDDefines the default command to run when the container starts
ENTRYPOINTSpecifies the main command executed when the container runs

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

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

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

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

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

2. Dockerfile बनाएं

डायरेक्टरी के भीतर, एक Dockerfile बनाएं और निम्न सामग्री जोड़ें:

# Use the official Ubuntu base image
FROM ubuntu:latest

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

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

# Set the working directory
WORKDIR /workspace

# Default command executed 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

यह कंटेनर Dockerfile में निर्दिष्ट curl और vim जैसे टूल्स को शामिल करेगा।

5. Ubuntu कंटेनर में जापानी भाषा वातावरण को कॉन्फ़िगर करना

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

जापानी लोकैल सेटअप करना

Ubuntu कंटेनर में जापानी डिस्प्ले और इनपुट को सक्षम करने के लिए आवश्यक भाषा पैकेज इंस्टॉल करें।

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

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

2. लोकैल कॉन्फ़िगर करें

लोकैल सेट करें और सेटिंग्स लागू करें।

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 सर्वर का उपयोग कर सकते हैं।

होस्ट मशीन पर एक X सर्वर इंस्टॉल करें और X11 सक्षम करके कंटेनर चलाएँ।

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

6. Docker इमेजेज़ को ऑप्टिमाइज़ और आकार घटाना

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

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

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

FROM ubuntu:minimal

वैकल्पिक रूप से, आप Alpine Linux का उपयोग कर सकते हैं, जो Ubuntu से काफी छोटा है।

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

यह विधि इमेज आकार को कई सौ मेगाबाइट्स तक कम कर सकती है।

इमेज आकार कम करने के लिए अनावश्यक फाइलें हटाना

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 कंटेनर के अंदर एक डेवलपमेंट एनवायरनमेंट सेटअप करेंगे और Docker का उपयोग करके एप्लिकेशन्स विकसित करने का प्रदर्शन करेंगे।

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

Docker कंटेनर के अंदर 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 कमांड को एक्जीक्यूट करके Python स्क्रिप्ट्स चला सकते हैं और एप्लिकेशन्स विकसित कर सकते हैं।

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

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

侍エンジニア塾