ডেভেলপারদের জন্য Docker: ইমেজ, কন্টেইনার এবং Compose

DevOps2026-10-09TryQuickToolBox

আপনি নিশ্চয়ই Docker এবং কন্টেইনার সম্পর্কে শুনেছেন, কিন্তু কীভাবে এগুলো আপনার দৈনন্দিন ডেভেলপমেন্ট ওয়ার্কফ্লোতে মানিয়ে যায় তা হয়তো নিশ্চিত নন। অথবা হয়তো আপনি Docker ব্যবহার করে দেখেছেন, কিন্তু ইমেজ, কন্টেইনার এবং Compose-এর ধারণাগুলো জটিল মনে হচ্ছে। এই গাইডটি ব্যবহারিক উদাহরণসহ আপনাকে প্রয়োজনীয় বিষয়গুলো বুঝিয়ে দেবে, যাতে আপনি আপনার প্রকল্পে Docker কার্যকরভাবে ব্যবহার শুরু করতে পারেন।

Docker ইমেজ এবং কন্টেইনার কী?

একটি Docker ইমেজ-কে আপনার অ্যাপ্লিকেশনের ব্লুপ্রিন্ট হিসেবে ভাবুন। এতে আপনার কোড চালানোর জন্য প্রয়োজনীয় সবকিছু থাকে: অপারেটিং সিস্টেম, রানটাইম, লাইব্রেরি এবং আপনার অ্যাপ্লিকেশন ফাইল। ইমেজগুলো অপরিবর্তনীয় এবং একটি Dockerfile থেকে তৈরি হয়।

একটি কন্টেইনার হলো একটি ইমেজের চলমান ইনস্ট্যান্স। আপনি যখন একটি কন্টেইনার চালু করেন, Docker ইমেজ থেকে একটি বিচ্ছিন্ন পরিবেশ তৈরি করে। আপনি একই ইমেজ থেকে একাধিক কন্টেইনার চালাতে পারেন, প্রত্যেকটির নিজস্ব অবস্থা থাকে।

মূল পার্থক্য

ইমেজ কন্টেইনার
রিড-অনলি টেমপ্লেট চলমান ইনস্ট্যান্স
Dockerfile থেকে তৈরি ইমেজ থেকে তৈরি
রেজিস্ট্রিতে সংরক্ষিত হোস্টে চলে
অপরিবর্তনীয় ক্ষণস্থায়ী (বন্ধ, চালু, মুছে ফেলা যায়)

আপনার প্রথম Docker ইমেজ তৈরি করা

চলুন একটি সাধারণ Node.js অ্যাপ তৈরি করি এবং এটি কন্টেইনারাইজ করি। আপনার প্রকল্পের রুটে একটি Dockerfile দিয়ে শুরু করুন:

# Use an official Node.js runtime as a parent image
FROM node:18-alpine

# Set the working directory
WORKDIR /app

# Copy package.json and package-lock.json
COPY package*.json ./

# Install dependencies
RUN npm ci --only=production

# Copy the rest of the application code
COPY . .

# Expose the port the app runs on
EXPOSE 3000

# Define the command to run the app
CMD ["node", "server.js"]

ইমেজটি তৈরি করুন:

docker build -t my-node-app .

ইমেজ থেকে একটি কন্টেইনার চালান:

docker run -p 3000:3000 -d my-node-app

আপনার অ্যাপ এখন http://localhost:3000-এ অ্যাক্সেসযোগ্য।

কন্টেইনার ম্যানেজমেন্ট

কন্টেইনার ম্যানেজ করার জন্য এখানে প্রয়োজনীয় কমান্ডগুলো রয়েছে:

Docker Compose দিয়ে মাল্টি-কন্টেইনার অ্যাপ সরল করা

বাস্তব অ্যাপ্লিকেশনে প্রায়ই একাধিক সার্ভিস প্রয়োজন হয়: একটি ওয়েব সার্ভার, একটি ডাটাবেস, একটি ক্যাশ ইত্যাদি। এগুলোকে আলাদা docker run কমান্ড দিয়ে ম্যানেজ করা কষ্টকর। Docker Compose আপনাকে একটি YAML ফাইল ব্যবহার করে মাল্টি-কন্টেইনার অ্যাপ্লিকেশন সংজ্ঞায়িত এবং চালানোর সুযোগ দেয়।

একটি docker-compose.yml তৈরি করুন:

version: '3.8'
services:
  web:
    build: .
    ports:
      - "3000:3000"
    environment:
      - NODE_ENV=production
      - DB_HOST=db
    depends_on:
      - db
  db:
    image: postgres:15-alpine
    environment:
      - POSTGRES_USER=user
      - POSTGRES_PASSWORD=password
      - POSTGRES_DB=mydb
    volumes:
      - postgres_data:/var/lib/postgresql/data
volumes:
  postgres_data:

সব সার্ভিস চালু করুন:

docker compose up -d

সেগুলো বন্ধ এবং মুছে ফেলুন:

docker compose down

ডেভেলপমেন্টের জন্য সেরা অনুশীলন

সাধারণ জিজ্ঞাসা

ইমেজ এবং কন্টেইনারের মধ্যে পার্থক্য কী?

একটি ইমেজ হলো একটি রিড-অনলি টেমপ্লেট যা অ্যাপ্লিকেশন এবং তার ডিপেন্ডেন্সিগুলো সংজ্ঞায়িত করে। একটি কন্টেইনার হলো একটি ইমেজের চলমান ইনস্ট্যান্স, যার উপরে একটি রাইটেবল লেয়ার থাকে।

আমি কি প্রোডাকশনে Docker Compose ব্যবহার করতে পারি?

Docker Compose মূলত ডেভেলপমেন্ট এবং টেস্টিংয়ের জন্য ডিজাইন করা হয়েছে। প্রোডাকশনের জন্য Kubernetes বা Docker Swarm-এর মতো অর্কেস্ট্রেশন টুল বিবেচনা করুন।

Docker-এ আমি কীভাবে ডাটা স্থায়ী করব?

ভলিউম বা বাইন্ড মাউন্ট ব্যবহার করুন। ভলিউমগুলো Docker দ্বারা পরিচালিত হয় এবং কন্টেইনার দ্বারা উৎপন্ন ডাটা স্থায়ী করার জন্য এগুলোই পছন্দের উপায়।

আপনার অ্যাপ কন্টেইনারাইজ করতে প্রস্তুত? আপনার টিমের জন্য ডকুমেন্টেশন বা গাইড PDF-এ রূপান্তর করতে হলে, আমাদের Word to PDF কনভার্টার চেষ্টা করুন মার্জিত ডকুমেন্ট শেয়ার করতে।