Kyun Seekhna Zaroori Hai?

Docker se same code har jagah chalta hai � local, cloud, production sab mein same behavior. "Works on my machine" problem khatam! Docker aapke app ke saare dependencies aur environment ko ek box (container) mein pack karta hai jo kahin bhi chalega.

Prerequisite:

Ye lesson API Development ke baad seekhna best hai. FastAPI basics aur deployment concepts samajhna zaroori hai.

Core Concepts

IMAGE

Blueprint ya template. Ye aapke app ka read-only copy hai � jaise building ka map. Ye build hota hai aur registry mein store hota hai.

CONTAINER

Running instance of image. Jab image chalta hai to container banta hai. Ye aapke app ka live version hai jo actually kaam karta hai.

DOCKERFILE

Build instructions. Ye ek text file hai jo batata hai image kaise banani hai � kaunsa base image, kya install karna, kya copy karna.

COMPOSE

Multi-container setup. Ek se zyada containers ko manage karna � jaise API server + database + cache sab saath chalana.

Dockerfile Example

Ye ek Python FastAPI app ka Dockerfile hai. Har instruction samajhte hain:

Dockerfile
# Base image choose karo
FROM python:3.9-slim

# Working directory set karo
WORKDIR /app

# Pehle requirements copy karo (caching ke liye)
COPY requirements.txt .

# Dependencies install karo
RUN pip install -r requirements.txt

# Baaki code copy karo
COPY . .

# Port expose karo
EXPOSE 8000

# App start karo
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]
Docker commands:
Build image: docker build -t my-api .
Run container: docker run -p 8000:8000 my-api
List containers: docker ps
Stop container: docker stop <container-id>

Docker Compose - Multi Container

Ek se zyada containers ko ek saath manage karna ho to Compose use karo. Ye ek YAML file se sab handle karta hai:

docker-compose.yml
version: '3.8'

services:
 api:
 build: .
 ports:
 - "8000:8000"
 depends_on:
 - redis
 environment:
 - REDIS_HOST=redis

 redis:
 image: redis:alpine
 ports:
 - "6379:6379"
Compose commands:
Start sab: docker-compose up -d
Stop sab: docker-compose down
Logs dekho: docker-compose logs -f
Status check: docker-compose ps

Interactive Editor

Apna Dockerfile build karo aur test karo:

Terminal ready. Build button dabao...

Exercise

Ye question aapko samajhna chahiye Docker ke liye:

Question: Docker image aur container mein kya fark hai?

A: Image = running app, Container = frozen app
B: Image = container ka naam, Container = image ka version
C: Image = blueprint, Container = running instance
D: Image = Docker ka part, Container = Kubernetes ka part