Docker Images
Image কী, Image layers, Docker Hub, pull/push/tag — বাংলায় সম্পূর্ণ গাইড।
Image হলো container তৈরির blueprint — একটি read-only template যাতে OS-এর কিছু অংশ, runtime, কোড, library ও config থাকে। Image থেকে container তৈরি হয় যতবার খুশি।
Image কী?
Image-কে ভাবা যায় একটি recipe হিসেবে — এর ভেতরে থাকে application চালানোর জন্য যা যা দরকার। Image নিজে চলে না; চালাতে হয় container হিসেবে।
Image layers
Image তৈরি হয় একাধিক layer দিয়ে। প্রতিটি instruction (যেমন RUN, COPY) একটি নতুন layer যোগ করে। Layer-গুলো cache হয় — অর্থাৎ আগের build-এর layer অপরিবর্তিত থাকলে পরে আবার সেটা skip করা হয়, ফলে build তাড়াতাড়ি হয়।
app-image
├─ layer: FROM node:20-slim (base)
├─ layer: COPY package*.json (dependency files)
├─ layer: RUN npm ci (node_modules)
├─ layer: COPY . . (app code)
└─ layer: CMD ["npm","start"] (command config)Image নাম ও tag
Image-এর নাম সাধারণত repository:tag আকারের হয়। tag না দিলে ধরা হয় latest।
docker image ls # list images
docker pull node:20-alpine # tag নির্দিষ্ট করে pull
docker pull node # latest (আসলে node:latest)
docker image rm node:20-alpine # image মুছা
docker rmi d16c0b3a3f2a # image ID দিয়েও মুছা যায়Tag করা ও push করা
নিজের image-কে Docker Hub-এ publish করতে চাইলে সঠিক নামে tag করে push করতে হয়:
docker tag my-app yourusername/my-app:v1
docker login
docker push yourusername/my-app:v1Docker Hub ও Registry
Docker Hub হলো default public registry — অফিসিয়াল images (node, mongo, postgres, redis, nginx…) সবই সেখানে আছে। এছাড়া GitHub Container Registry (GHCR) বা AWS ECR-এর মতো private registry-ও ব্যবহার করা যায়।
প্রোডাকশনে অফিসিয়াল images (node:*, mongo:*) ব্যবহার করুন — এগুলো maintained ও নিরাপদ। কখনো random anonymous-এর image trust করবেন না।