হোম/Roadmap/Chapter 2.01
Phase 2 · Chapter 2.01

Docker Basics

“Works on my machine” সমস্যার সমাধান। Container হলো reproducible, portable runtime — MLOps-এর backbone।

Hook

একই code, ভিন্ন machine, ভিন্ন result

Dev laptop-এ চলছে, staging-এ চলছে না। Python version, OS library, CUDA — কোথায় mismatch খুঁজে পাওয়া যন্ত্রণা। Docker এই পুরো environment-কে একটা box-এ বন্দি করে।

Concept

৪টি core terminology

  • Image — immutable blueprint (code + deps + OS layer)।
  • Container — image-এর running instance।
  • Dockerfile — image বানানোর recipe।
  • Registry — image-এর GitHub (Docker Hub, GHCR, ECR)।
Step-by-step

প্রথম Dockerfile

dockerfileproduction
# Dockerfile
FROM python:3.11-slim

WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

COPY . .
EXPOSE 8000
CMD ["python", "app.py"]
bashproduction
# Build
docker build -t hello-ml:1.0 .

# Run
docker run --rm -p 8000:8000 hello-ml:1.0

# List
docker ps
docker images

ব্যাখ্যা: প্রতিটি instruction একটি layer তৈরি করে। Layer cache করা থাকে — তাইrequirements.txt code-এর আগে copy করলে rebuild দ্রুত হয়।

Code

Essential Docker commands

bashproduction
docker build -t name:tag .        # image build
docker run -d -p 8000:8000 name   # detached run
docker ps                          # running containers
docker logs <id>                   # logs দেখা
docker exec -it <id> bash          # container-এ ঢোকা
docker stop <id> && docker rm <id> # bন্ধ ও remove
docker image prune -a              # cleanup
docker push user/name:tag          # registry-তে push
Intuition

VM vs Container

Virtual Machine

পুরো OS chala, ভারী (GB), boot slow।

Container

Host kernel share করে, lightweight (MB), seconds-এ start।

Real-world

Industry usage

  • Netflix — হাজার container per service।
  • Spotify — ML model serving Docker-এ।
  • Google — Borg/Kubernetes container-এর জন্ম।
Common Mistakes

যেসব ভুল বেশি হয়

  • latest tag ব্যবহার — reproducibility hারায়।
  • root user-এ চালানো — security risk।
  • Secret hardcode Dockerfile-এ — repo leak হলে disaster।
  • Cache-friendly order না মানা — build বারবার slow।
Practice Tasks

অনুশীলন

  1. একটি “hello world” Flask app dockerize করুন।
  2. Image size compare করুন python:3.11 vs python:3.11-slim
  3. Docker Hub-এ একটি account বানিয়ে image push করুন।
  4. docker exec দিয়ে container-এর ভিতরে ঢুকে file দেখুন।
Mini Project

Mini Project — Hello Container

একটি FastAPI /ping endpoint বানিয়ে dockerize করুন। Image build, run, push — তিনটি ধাপের screenshot সহ README লিখুন।

Summary

এই chapter থেকে যা শিখলাম

  • Image = blueprint, container = instance।
  • Dockerfile layer cache build দ্রুত করে।
  • Registry image distribute করার জায়গা।