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-তে pushIntuition
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
যেসব ভুল বেশি হয়
latesttag ব্যবহার — reproducibility hারায়।rootuser-এ চালানো — security risk।- Secret hardcode Dockerfile-এ — repo leak হলে disaster।
- Cache-friendly order না মানা — build বারবার slow।
Practice Tasks
অনুশীলন
- একটি “hello world” Flask app dockerize করুন।
- Image size compare করুন
python:3.11vspython:3.11-slim। - Docker Hub-এ একটি account বানিয়ে image push করুন।
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 করার জায়গা।