AI Engineering Tools

प्रोग्रामिंग

Docker

Docker इमेज, कंटेनर, Dockerfile, Compose, पोर्ट, वॉल्यूम, लॉग और सामान्य समस्या निवारण की खोज योग्य मार्गदर्शिका।

33 items

मुख्य अवधारणाएँ

Docker

Docker

docker --version

अर्थ

अनुप्रयोगों को अलग-अलग कंटेनरों में पैकेज और चलाने के लिए एक उपकरण।

कब उपयोग करें

इसका उपयोग तब करें जब आप चाहते हैं कि ऐप समान OS पैकेजों, रनटाइम और निर्भरताओं के साथ मशीनों पर चले।

उदाहरण

docker --version

अनुरोध उदाहरण

बताएं कि क्या इस परियोजना को Docker के साथ चलाया जा सकता है।

मुख्य अवधारणाएँ

Docker daemon

Docker daemon

Docker डेमॉन से कनेक्ट नहीं हो सका।

अर्थ

पृष्ठभूमि सेवा जो छवियों का निर्माण करती है और कंटेनर चलाती है।

कब उपयोग करें

यदि Docker कमांड कनेक्ट नहीं हो पा रहे हैं, तो Docker Desktop या Docker सेवा चल नहीं रही हो सकती है।

उदाहरण

Docker डेमॉन से कनेक्ट नहीं हो सका।

अनुरोध उदाहरण

जाँच करें कि Docker कमांड डेमॉन से क्यों कनेक्ट नहीं हो पा रहे हैं।

मुख्य अवधारणाएँ

छवि

Image

node:20-alpine

अर्थ

एक पुन: प्रयोज्य टेम्पलेट जिसका उपयोग कंटेनर बनाने के लिए किया जाता है।

कब उपयोग करें

छवियां परिभाषित करती हैं कि कौन सा OS, रनटाइम, लाइब्रेरी और ऐप फ़ाइलें एक कंटेनर के साथ शुरू होता है।

उदाहरण

node:20-alpine

अनुरोध उदाहरण

मुझे बताएं कि यह Dockerfile किस बेस इमेज का उपयोग करता है।

मुख्य अवधारणाएँ

कंटेनर

Container

docker ps

अर्थ

एक चल रहा या बंद इंस्टेंस जो एक छवि से बनाया गया है।

कब उपयोग करें

ऐप, डेटाबेस, कैश या वर्कर को अलग-अलग वातावरण में चलाने के लिए कंटेनरों का उपयोग करें।

उदाहरण

docker ps

अनुरोध उदाहरण

चल रहे कंटेनरों की सूची बनाएं और बताएं कि प्रत्येक एक क्या करता है।

मुख्य अवधारणाएँ

रजिस्ट्री

Registry

docker pull postgres:16

अर्थ

एक सर्वर जहां Docker छवियों को संग्रहीत किया जाता है और उनसे डाउनलोड किया जाता है।

कब उपयोग करें

Docker Hub and private registries are used to share base images or deployable app images.

उदाहरण

docker pull postgres:16

अनुरोध उदाहरण

बताएं कि यह इमेज कहाँ से डाउनलोड की जाएगी।

Dockerfile

Dockerfile

Dockerfile

Dockerfile

अर्थ

एक फ़ाइल जो Docker छवि बनाने के तरीके को परिभाषित करती है।

कब उपयोग करें

इसका उपयोग निर्भरता स्थापित करने, ऐप फ़ाइलें कॉपी करने और ऐप शुरू करने वाले कमांड को परिभाषित करने के लिए करें।

उदाहरण

Dockerfile

अनुरोध उदाहरण

इस Dockerfile को पढ़ें और निर्माण चरणों का सारांश दें।

Dockerfile

FROM

FROM

FROM node:20-alpine

अर्थ

वह Dockerfile निर्देश जो बेस इमेज का चयन करता है।

कब उपयोग करें

यह शुरुआती OS परत और अक्सर रनटाइम संस्करण का निर्धारण करता है।

सावधानी

बेस इमेज बदलने से उपलब्ध कमांड, सुरक्षा अपडेट और इमेज आकार प्रभावित हो सकते हैं।

उदाहरण

FROM node:20-alpine

अनुरोध उदाहरण

बताएं कि इस FROM इमेज में क्या शामिल है।

Dockerfile

WORKDIR

WORKDIR

WORKDIR /app

अर्थ

यह फ़ोल्डर निर्दिष्ट करता है जहाँ छवि के अंदर निम्नलिखित कमांड निष्पादित होते हैं।

कब उपयोग करें

इसका उपयोग इस प्रकार करें कि COPY, RUN, और CMD कमांड एक अनुमानित ऐप फ़ोल्डर से काम करें।

उदाहरण

WORKDIR /app

अनुरोध उदाहरण

बताएं कि यह Dockerfile ऐप निर्देशिका के रूप में किस फ़ोल्डर का उपयोग करता है।

Dockerfile

COPY

COPY

COPY package.json package-lock.json ./

अर्थ

बिल्ड संदर्भ से फ़ाइलों को छवि में कॉपी करता है।

कब उपयोग करें

इसका उपयोग छवि में निर्भरता फ़ाइलें, स्रोत कोड और स्थिर संपत्तियां जोड़ने के लिए करें।

उदाहरण

COPY package.json package-lock.json ./

अनुरोध उदाहरण

मुझे बताएं कि यह COPY चरण किस फ़ाइलों को इमेज में जोड़ता है।

Dockerfile

RUN

RUN

RUN npm ci

अर्थ

छवि बनाते समय एक कमांड चलाता है।

कब उपयोग करें

इसका उपयोग OS पैकेज स्थापित करने, निर्भरता स्थापित करने, या ऐप फ़ाइलें बनाने के लिए करें।

सावधानी

RUN इमेज बनाने के समय होता है, कंटेनर शुरू होने पर नहीं।

उदाहरण

RUN npm ci

अनुरोध उदाहरण

कंटेनर स्टार्टअप कमांड से अलग Dockerfile बिल्ड-टाइम कमांड।

Dockerfile

CMD

CMD

CMD ["npm", "run", "start"]

अर्थ

यह डिफ़ॉल्ट कमांड को परिभाषित करता है जो कंटेनर शुरू होने पर चलता है।

कब उपयोग करें

इसका उपयोग वेब सर्वर, API सर्वर, कार्यकर्ता, या स्क्रिप्ट शुरू करने के लिए करें।

उदाहरण

CMD ["npm", "run", "start"]

अनुरोध उदाहरण

मुझे बताएं कि यह कंटेनर किस कमांड के साथ शुरू होता है।

Dockerfile

EXPOSE

EXPOSE

EXPOSE 3000

अर्थ

दस्तावेज़ करें कि कंटेनरीकृत ऐप किस पोर्ट पर सुनने की उम्मीद है।

कब उपयोग करें

इसका उपयोग एक संकेत के रूप में करें, फिर `docker run -p` या कंपोज़ पोर्ट के साथ पोर्ट प्रकाशित करें।

सावधानी

केवल EXPOSE आपके ब्राउज़र से ऐप को एक्सेस करने योग्य नहीं बनाता है।

उदाहरण

EXPOSE 3000

अनुरोध उदाहरण

बताएं कि क्या यह उजागर पोर्ट वास्तव में प्रकाशित है।

Dockerfile

.dockerignore

.dockerignore

node_modules

अर्थ

एक फ़ाइल जो Docker बिल्ड संदर्भ से पथों को बाहर करती है।

कब उपयोग करें

इसका उपयोग स्थानीय निर्भरता, बिल्ड आउटपुट, रहस्यों और अस्थायी फ़ाइलों को छवि बिल्ड से बाहर रखने के लिए करें।

उदाहरण

node_modules

अनुरोध उदाहरण

जाँच करें कि क्या यह .dockerignore असुरक्षित या अनावश्यक फ़ाइलों को बाहर करता है।

Dockerfile

बिल्ड संदर्भ

Build context

docker build -t my-app .

अर्थ

वह फ़ोल्डर जिसे Docker को छवि निर्माण के दौरान भेजा जाता है।

कब उपयोग करें

Docker build में अंतिम डॉट आमतौर पर इंगित करता है कि वर्तमान फ़ोल्डर बिल्ड संदर्भ है।

सावधानी

एक बड़ा संदर्भ बिल्ड को धीमा कर सकता है और अनजाने में निजी फ़ाइलों को शामिल कर सकता है।

उदाहरण

docker build -t my-app .

अनुरोध उदाहरण

बताएं कि इस Docker बिल्ड के लिए कौन सी फ़ाइलें उपलब्ध हैं।

Docker Compose

Docker Compose

Docker Compose

docker compose up

अर्थ

एक उपकरण जो एक YAML फ़ाइल से कई डॉकर (Docker) सेवाओं को चलाने के लिए है।

कब उपयोग करें

इसका उपयोग ऐप प्लस डेटाबेस, कैश, वर्कर या स्थानीय विकास स्टैक के लिए करें।

उदाहरण

docker compose up

अनुरोध उदाहरण

बताएं कि यह कंपोज़ फ़ाइल कौन सी सेवाएं शुरू करता है।

Docker Compose

सेवाएं

services

services: web: db:

अर्थ

नाम वाले ऐप भाग जो एक कंपोज़ फ़ाइल में परिभाषित हैं।

कब उपयोग करें

एक वेब सेवा ऐप को चला सकती है जबकि एक db सेवा PostgreSQL चलाती है।

उदाहरण

services: web: db:

अनुरोध उदाहरण

इस कंपोज़ फ़ाइल में सेवाओं की सूची बनाएं और प्रत्येक एक क्या करता है।

Docker Compose

docker compose up

docker compose up

docker compose up -d

अर्थ

कंपोज़ फ़ाइल में परिभाषित सेवाओं को शुरू करें।

कब उपयोग करें

यदि आप चाहते हैं कि सेवाएं पृष्ठभूमि में चलें तो -d का उपयोग करें।

उदाहरण

docker compose up -d

अनुरोध उदाहरण

कंपोज़ सेवाओं को शुरू करें और दिखाएं कि कौन सी चल रही हैं।

Docker Compose

docker compose down

docker compose down

docker compose down

अर्थ

कंपोज़ द्वारा बनाए गए कंटेनरों को रोकता है और हटाता है।

कब उपयोग करें

इसका उपयोग तब करें जब आप एक स्थानीय विकास स्टैक के साथ समाप्त कर चुके हों।

सावधानी

नाम वाली वॉल्यूम आमतौर पर तब तक रहती हैं जब तक कि आप स्पष्ट रूप से वॉल्यूम को हटा नहीं देते।

उदाहरण

docker compose down

अनुरोध उदाहरण

इस कंपोज़ स्टैक को स्थायी डेटा को हटाए बिना रोकें।

कमांड

docker build

docker build

docker build -t my-app .

अर्थ

Dockerfile और संदर्भ से एक Docker छवि बनाता है।

कब उपयोग करें

Dockerfile लिखने या ऐप निर्भरता बदलने के बाद इसका उपयोग करें।

उदाहरण

docker build -t my-app .

अनुरोध उदाहरण

इस Docker छवि का निर्माण करें और किसी भी निर्माण त्रुटि का सारांश दें।

कमांड

docker run

docker run

docker run --name my-app -p 3000:3000 my-app

अर्थ

यह एक छवि से एक कंटेनर बनाता है और उसे शुरू करता है।

कब उपयोग करें

इसका उपयोग तब करें जब आप compose के बिना सीधे एक कंटेनर शुरू करना चाहते हैं।

उदाहरण

docker run --name my-app -p 3000:3000 my-app

अनुरोध उदाहरण

इस छवि को चलाएं और ब्राउज़र URL को समझाएं।

कमांड

docker ps

docker ps

docker ps

अर्थ

चल रहे कंटेनरों की सूची बनाएं।

कब उपयोग करें

जब आप रुके हुए कंटेनरों को भी चाहते हैं तो docker ps -a का उपयोग करें।

उदाहरण

docker ps

अनुरोध उदाहरण

चल रहे कंटेनरों और उनके प्रकाशित पोर्ट दिखाएं।

कमांड

docker stop

docker stop

docker stop my-app

अर्थ

एक चल रहे कंटेनर को रोकता है।

कब उपयोग करें

इसका उपयोग किसी कंटेनर को हटाने या पोर्ट को मुक्त करने से पहले करें।

उदाहरण

docker stop my-app

अनुरोध उदाहरण

पोर्ट 3000 का उपयोग करके कंटेनर को रोकें।

कमांड

docker logs

docker logs

docker logs my-app

अर्थ

एक कंटेनर से लॉग प्रिंट करता है।

कब उपयोग करें

इसका उपयोग तब करें जब एक कंटेनर बाहर निकलता है, क्रैश होता है, या ऐप प्रतिक्रिया नहीं करता है।

उदाहरण

docker logs my-app

अनुरोध उदाहरण

इस कंटेनर के लॉग पढ़ें और पहली त्रुटि ढूंढें।

कमांड

docker exec

docker exec

docker exec -it my-app sh

अर्थ

पहले से चल रहे कंटेनर के अंदर एक कमांड चलाता है।

कब उपयोग करें

इसका उपयोग कंटेनर के अंदर फ़ाइलों, पर्यावरण चर, या स्थापित टूल की जांच करने के लिए करें।

सावधानी

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

उदाहरण

docker exec -it my-app sh

अनुरोध उदाहरण

इस कंटेनर में एक शेल खोलें और इसके पर्यावरण चर की जांच करें।

पोर्ट और नेटवर्क

पोर्ट

ports

3000:3000

अर्थ

आपके मशीन पर एक पोर्ट को कंटेनर के अंदर एक पोर्ट से जोड़ता है।

कब उपयोग करें

इसका उपयोग इस प्रकार करें कि एक ब्राउज़र एक कंटेनर के अंदर चल रहे वेब ऐप तक पहुंच सके।

सावधानी

बायां पक्ष होस्ट पोर्ट है, और दायां पक्ष कंटेनर पोर्ट है।

उदाहरण

3000:3000

अनुरोध उदाहरण

बताएं कि मुझे इस पोर्ट सेटिंग के लिए किस URL को खोलना चाहिए।

पोर्ट और नेटवर्क

Docker में localhost

localhost in Docker

host.docker.internal

अर्थ

localhost का अर्थ कंटेनर ही हो सकता है, आपके होस्ट मशीन से नहीं, जब कोड Docker के अंदर चलता है।

कब उपयोग करें

कंपोज़ नेटवर्क में सेवा नामों का उपयोग करें, या host.docker.internal का उपयोग करें जब किसी कंटेनर को होस्ट मशीन तक पहुंचने की आवश्यकता होती है।

उदाहरण

host.docker.internal

अनुरोध उदाहरण

बताएं कि localhost इस कंटेनर से डेटाबेस तक क्यों नहीं पहुंच पा रहा है।

फ़ाइल और डेटा

वॉल्यूम

Volume

db-data:/var/lib/postgresql/data

अर्थ

Docker-managed storage that can persist data outside a container's lifecycle.

कब उपयोग करें

डेटाबेस डेटा या अन्य फ़ाइलों के लिए वॉल्यूम का उपयोग करें जिन्हें कंटेनर पुनर्निर्माण से बचना चाहिए।

सावधानी

वॉल्यूम को हटाने से स्थायी डेटा डिलीट हो सकता है।

उदाहरण

db-data:/var/lib/postgresql/data

अनुरोध उदाहरण

मुझे बताएं कि कौन से कंपोज़ वॉल्यूम स्थायी डेटा संग्रहीत करते हैं।

फ़ाइल और डेटा

बाइंड माउंट

Bind mount

./src:/app/src

अर्थ

एक होस्ट फ़ोल्डर को सीधे एक कंटेनर पथ में जोड़ता है।

कब उपयोग करें

इसका उपयोग विकास के दौरान करें ताकि होस्ट पर कोड संपादन कंटेनर के अंदर दिखाई दें।

सावधानी

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

उदाहरण

./src:/app/src

अनुरोध उदाहरण

बताएं कि क्या यह वॉल्यूम एक नामित वॉल्यूम है या एक बाइंड माउंट।

फ़ाइल और डेटा

पर्यावरण।

environment

DATABASE_URL=postgres://db:5432/app

अर्थ

कंटेनर में पारित कॉन्फ़िगरेशन मान।

कब उपयोग करें

डेटाबेस यूआरएल, पोर्ट, मोड, फीचर फ़्लैग और रनटाइम सेटिंग्स के लिए पर्यावरण चर का उपयोग करें।

सावधानी

सार्वजनिक छवियों में गुप्त जानकारी न डालें या वास्तविक गुप्त मानों को प्रतिबद्ध न करें।

उदाहरण

DATABASE_URL=postgres://db:5432/app

अनुरोध उदाहरण

जाँच करें कि इस कंटेनर को किन पर्यावरण चर की आवश्यकता है।

समस्या समाधान

पोर्ट पहले से ही आवंटित है

port is already allocated

0.0.0.0:3000 पर बाइंड करने में विफल: पोर्ट पहले से ही आवंटित है।

अर्थ

Docker cannot publish a host port because another process or container is already using it.

कब उपयोग करें

उस पोर्ट का उपयोग करने वाली प्रक्रिया या कंटेनर को खोजें, फिर उसे रोकें या एक अलग होस्ट पोर्ट चुनें।

उदाहरण

0.0.0.0:3000 पर बाइंड करने में विफल: पोर्ट पहले से ही आवंटित है।

अनुरोध उदाहरण

पता करें कि इस Docker पोर्ट का उपयोग कौन कर रहा है और एक सुरक्षित समाधान का सुझाव दें।

समस्या समाधान

कंटेनर नाम पहले से ही उपयोग में है।

container name is already in use

संघर्ष। कंटेनर नाम "/my-app" पहले से ही उपयोग में है

अर्थ

समान नाम वाला एक कंटेनर पहले से मौजूद है।

कब उपयोग करें

मौजूदा कंटेनरों की सूची बनाएं, फिर पुराने कंटेनर को पुन: उपयोग करें, हटाएं या नाम बदलें।

उदाहरण

संघर्ष। कंटेनर नाम "/my-app" पहले से ही उपयोग में है

अनुरोध उदाहरण

डेटा को अप्रत्याशित रूप से हटाने के बिना इस कंटेनर नाम संघर्ष को हल करें।

समस्या समाधान

बिल्ड कैश

Build cache

docker build --no-cache -t my-app .

अर्थ

Docker can reuse previous build layers to make builds faster.

कब उपयोग करें

यदि कोई परिवर्तन नजरअंदाज किया गया प्रतीत होता है, तो Dockerfile के क्रम का निरीक्षण करें या कैश के बिना पुनर्निर्माण करें ताकि समस्या का पता चल सके।

सावधानी

`--no-cache` का उपयोग करने से बिल्ड धीमे हो सकते हैं, इसलिए इसका उपयोग जानबूझकर करें।

उदाहरण

docker build --no-cache -t my-app .

अनुरोध उदाहरण

बताएं कि क्या Docker बिल्ड कैश मेरे परिवर्तन को छिपा सकता है।

सुरक्षा

docker system prune

docker system prune

docker system prune

अर्थ

अप्रयुक्त Docker डेटा को हटा दें, जैसे कि रुके हुए कंटेनर, अप्रयुक्त नेटवर्क और लटकते हुए इमेज।

कब उपयोग करें

इसका उपयोग तब करें जब Docker बहुत अधिक डिस्क स्थान का उपयोग करता है और आप समझते हैं कि क्या हटाया जाएगा।

सावधानी

अतिरिक्त झंडे के साथ, प्रूनिंग उन छवियों या वॉल्यूम को हटा सकता है जिनकी आप अभी भी परवाह करते हैं।

उदाहरण

docker system prune

अनुरोध उदाहरण

Docker को हटाने से पहले, दिखाएं कि क्या हटाया जाएगा और कौन सा डेटा सुरक्षित है।