Layers kyun? Docker ek image ek instruction at a time build karta hai. Har instruction (FROM, RUN, COPY, …) ek naya read-only layer produce karta hai jo pichhle layer ke upar stack hota hai (ek union filesystem). Is design se do bade fayde milte hain:
Caching — agar kisi layer ki instruction aur uske inputs unchanged hain, toh Docker cached layer reuse karta hai rebuild karne ki jagah. Rebuilds minutes se seconds mein aa jaate hain.
Sharing — layers hash se content-addressed hote hain, isliye do images jo ek base share karti hain woh use disk/registry pe sirf ek baar store karti hain.
# 1. Base layer: ek slim OS + Python. Chhota base = chhoti image, kam attack surface.FROM python:3.11-slim# 2. Working directory set karo (baad ke saare paths iske relative honge).WORKDIR /app# 3. SIRF dependency manifest pehle copy karo — yeh layer rarely change hoti hai.COPY requirements.txt .# 4. Deps install karo. --no-cache-dir layer ko chhota rakhta hai.RUN pip install --no-cache-dir -r requirements.txt# 5. AB source code copy karo — yeh har commit pe change hota hai, isliye LAST mein jaata hai.COPY . .# 6. Woh port document karo jis par app listen karta hai (metadata, firewall rule nahi).EXPOSE 8000# 7. Container start hone par run hone wala default process.CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "8000"]
Containers VMs se zyada fast kyun start hote hain?
Pehle kaun si line aani chahiye: COPY requirements.txt ya COPY . .? Kyun?
Image aur container mein kya fark hai?
Kya EXPOSE port publish karta hai? Kya karta hai?
Data kahan jaata hai agar tum chahte ho ki woh container deletion ke baad survive kare?
Answers: 1) Woh host kernel share karte hain — boot karne ke liye koi guest OS nahi. 2) requirements.txt pehle, taaki pip-install layer code edits ke across cached rahe. 3) Image = frozen template; container = uska running instance. 4) Nahi — EXPOSE metadata hai; run time par -p publish karta hai. 5) Ek mounted volume.
Recall Feynman: 12-saal ke bachche ko explain karo
Socho tumne ghar pe ek cake bake kiya aur woh perfect tha, lekin jab tumhare dost ne wahi recipe try ki toh unka oven alag tha aur woh bigad gaya. Docker aise hai jaise cake aur ek mini kitchen ko ek sealed lunchbox mein rakh do — same oven, same ingredients, same sab kuch — toh chahe kisi ke bhi ghar pe kholo, wahi taste aata hai. Recipe card Dockerfile hai, sealed lunchbox image hai, aur jab tum ek kholke khaane lagte ho woh container hai. Lunchbox ko sau baar copy kar sakte ho aur har ek same hoga.