Docker Images এবং Containers হল Docker প্রযুক্তির মূল উপাদান। এগুলি সফটওয়্যার ডেভেলপমেন্ট এবং ডিপ্লয়মেন্ট প্রক্রিয়াকে কার্যকর এবং সহজ করে তোলে। নিচে Docker Images এবং Containers-এর মধ্যে পার্থক্য এবং তাদের ভূমিকা বিস্তারিতভাবে আলোচনা করা হলো।
বিষয় | Docker Images | Docker Containers |
---|---|---|
বর্ণনা | একটি স্ট্যাটিক টেমপ্লেট | একটি চলমান উদাহরণ |
সৃষ্টি | কন্টেইনার তৈরির জন্য ব্যবহৃত | Docker Image থেকে তৈরি হয় |
স্থিতি | Immutable (অপরিবর্তনীয়) | Mutable (পরিবর্তনশীল) |
সংরক্ষণ | সংরক্ষণাগারে (Docker Registry) থাকতে পারে | কাজ করার সময় RAM এ থাকে |
কর্মক্ষমতা | কার্যকরী নয়; কন্টেইনার তৈরি করতে হয় | কার্যকরী; অ্যাপ্লিকেশন চালায় |
ভিত্তি | লেয়ার ভিত্তিক আর্কিটেকচারের উপর কাজ করে | Docker Image-এ নির্ভরশীল |
Docker Images এবং Containers Docker-এর মূল উপাদান। Images হল স্ট্যাটিক ব্লুপ্রিন্ট যা কন্টেইনার তৈরির জন্য ব্যবহৃত হয়, আর Containers হল চলমান উদাহরণ যা অ্যাপ্লিকেশনকে আলাদাভাবে পরিচালনা করে। এই দুটির মধ্যে পার্থক্য বোঝা গুরুত্বপূর্ণ, কারণ এটি Docker প্রযুক্তি এবং কন্টেইনারাইজেশনের কার্যকারিতা বুঝতে সাহায্য করে। Docker Images এবং Containers-এর ব্যবহার ডেভেলপমেন্ট এবং ডিপ্লয়মেন্টের প্রক্রিয়াকে সহজ এবং কার্যকর করে।
Docker Image হলো একটি কনটেইনারের ব্লুপ্রিন্ট যা কনটেইনার চালানোর জন্য প্রয়োজনীয় সমস্ত ফাইল, কোড, লাইব্রেরি এবং নির্ভরশীলতা ধারণ করে। এটি একটি লেয়ারড ফাইল সিস্টেমের উপর ভিত্তি করে তৈরি, যা দ্রুত এবং কার্যকরভাবে কনটেইনার তৈরি করতে সহায়তা করে।
বর্ণনা: Docker Image হল একটি ইমিউটেবল (অপরিবর্তনীয়) ফাইল সিস্টেম যা একটি অ্যাপ্লিকেশন এবং তার নির্ভরশীলতার সংকলন। এটি একটি কনটেইনার তৈরি করার সময় ব্যবহৃত হয় এবং এটি সাধারণত একাধিক লেয়ারে বিভক্ত থাকে।
লেয়ারিং: Docker Images বিভিন্ন লেয়ারের সমন্বয়ে তৈরি হয়। প্রতিটি লেয়ার পূর্ববর্তী লেয়ারের উপর নির্মিত হয় এবং শুধুমাত্র পরিবর্তিত ফাইলগুলি সংরক্ষণ করে, যা স্পেস সাশ্রয় করে।
ভার্সনিং: Docker Images সাধারণত একটি ট্যাগের সাথে থাকে (যেমন v1.0
, latest
), যা ব্যবহারকারীদের নির্দিষ্ট সংস্করণ ব্যবহার করতে সহায়তা করে।
অ্যাপ্লিকেশন প্যাকেজিং:
কনটেইনার তৈরি:
শেয়ারিং:
অবস্থান এবং কনফিগারেশন:
ভার্সন নিয়ন্ত্রণ:
CI/CD প্রক্রিয়া:
Docker Image তৈরি করার জন্য সাধারণত একটি Dockerfile
ব্যবহার করা হয়, যা ইমেজ তৈরি করার জন্য প্রয়োজনীয় নির্দেশাবলী ধারণ করে। এখানে একটি সাধারণ উদাহরণ:
# একটি বেস ইমেজ নির্বাচন করুন
FROM ubuntu:latest
# প্রয়োজনীয় প্যাকেজ ইনস্টল করুন
RUN apt-get update && apt-get install -y python3
# অ্যাপ্লিকেশন কপি করুন
COPY . /app
# অ্যাপ্লিকেশন চালানোর জন্য কমান্ড নির্ধারণ করুন
CMD ["python3", "/app/app.py"]
Docker Image হলো একটি কনটেইনারের ব্লুপ্রিন্ট যা অ্যাপ্লিকেশন এবং তার নির্ভরশীলতার সংকলন করে। এটি বিভিন্ন পরিবেশে অ্যাপ্লিকেশনগুলি সহজে তৈরি, পরিচালনা এবং শেয়ার করতে সহায়তা করে। Docker Image-কে একটি গুরুত্বপূর্ণ উপাদান হিসেবে বিবেচনা করা হয়, যা কনটেইনারাইজেশন প্রযুক্তির মৌলিক ভিত্তি গঠন করে।
Docker Hub হল Docker-এর একটি পাবলিক রেজিস্ট্রি যেখানে ব্যবহারকারীরা Docker Images তৈরি, শেয়ার এবং সংরক্ষণ করতে পারেন। এটি একটি কেন্দ্রীয় স্থান যেখানে বিভিন্ন সফটওয়্যার ডেভেলপার এবং সংস্থাগুলি তাদের তৈরি করা Docker Images আপলোড করে, যাতে অন্যান্য ব্যবহারকারীরা সহজে সেগুলি ডাউনলোড ও ব্যবহার করতে পারে।
পাবলিক এবং প্রাইভেট রেজিস্ট্রি:
বিভিন্ন ইমেজ:
স্বয়ংক্রিয় নির্মাণ:
মেটাডেটা:
Docker Hub থেকে একটি Docker Image ডাউনলোড (যা "pull" বলা হয়) করার জন্য আপনাকে কিছু সহজ পদক্ষেপ অনুসরণ করতে হবে:
প্রথমে নিশ্চিত করুন যে আপনার সিস্টেমে Docker সঠিকভাবে ইনস্টল এবং চলমান রয়েছে। নিচের কমান্ডটি ব্যবহার করে Docker-এর সংস্করণ পরীক্ষা করুন:
docker --version
যদি আপনি প্রাইভেট ইমেজগুলি অ্যাক্সেস করতে চান তবে আপনাকে Docker Hub-এ লগইন করতে হবে:
docker login
এটি আপনার Docker Hub ইউজারনেম এবং পাসওয়ার্ড চাইবে। পাবলিক ইমেজের জন্য লগইন করা বাধ্যতামূলক নয়।
Docker Hub থেকে একটি ইমেজ পুল করতে, নিচের কমান্ডটি ব্যবহার করুন:
docker pull
উদাহরণস্বরূপ, যদি আপনি nginx
নামক একটি Docker Image ডাউনলোড করতে চান:
docker pull nginx
এটি Docker Hub থেকে nginx
ইমেজ ডাউনলোড করবে।
আপনার সিস্টেমে পুল করা ইমেজগুলি দেখতে, নিচের কমান্ডটি ব্যবহার করুন:
docker images
Docker Hub হল Docker Images-এর জন্য একটি গুরুত্বপূর্ণ রেজিস্ট্রি যা পাবলিক এবং প্রাইভেট ইমেজ শেয়ার করার সুবিধা প্রদান করে। Docker Hub থেকে ইমেজ পুল করা সহজ; আপনাকে শুধু docker pull
কমান্ডটি ব্যবহার করতে হবে। এই প্রক্রিয়ার মাধ্যমে আপনি প্রয়োজনীয় ইমেজগুলি দ্রুত ডাউনলোড করতে এবং কন্টেইনার চালানোর জন্য প্রস্তুত করতে পারবেন। Docker Hub ব্যবহার করে আপনার ডেভেলপমেন্ট এবং ডিপ্লয়মেন্ট প্রক্রিয়া আরও কার্যকরী এবং সুবিধাজনক হবে।
Custom Docker Image তৈরি করা একটি সাধারণ প্রক্রিয়া, যা Dockerfile
ব্যবহার করে করা হয়। Dockerfile
হল একটি টেক্সট ফাইল যা একটি Docker Image তৈরি করার জন্য প্রয়োজনীয় সমস্ত নির্দেশাবলী ধারণ করে। এখানে একটি কাস্টম Docker Image তৈরি করার জন্য ধাপগুলো দেওয়া হলো।
একটি নতুন ডিরেক্টরি তৈরি করুন যেখানে আপনার অ্যাপ্লিকেশন এবং Dockerfile থাকবে:
mkdir my-app
cd my-app
একটি Dockerfile
তৈরি করুন:
touch Dockerfile
আপনার পছন্দের টেক্সট এডিটর ব্যবহার করে Dockerfile
এ নির্দেশাবলী লিখুন। নিচে একটি সাধারণ উদাহরণ দেওয়া হলো:
# বেস ইমেজ নির্বাচন করুন
FROM python:3.9-slim
# কাজের ডিরেক্টরি তৈরি করুন
WORKDIR /usr/src/app
# প্রয়োজনীয় ফাইল কপি করুন
COPY requirements.txt ./
# নির্ভরশীলতা ইনস্টল করুন
RUN pip install --no-cache-dir -r requirements.txt
# অ্যাপ্লিকেশন ফাইল কপি করুন
COPY . .
# অ্যাপ্লিকেশন চালানোর জন্য কমান্ড নির্ধারণ করুন
CMD ["python", "./app.py"]
requirements.txt
ফাইল তৈরি করাআপনার অ্যাপ্লিকেশনের নির্ভরশীলতা সংজ্ঞায়িত করতে একটি requirements.txt
ফাইল তৈরি করুন:
flask
requests
app.py
নামে একটি সিম্পল Python অ্যাপ্লিকেশন ফাইল তৈরি করুন:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
return "Hello, Docker!"
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)
Dockerfile
এবং অ্যাপ্লিকেশন ফাইলগুলো তৈরির পর, টার্মিনালে নিচের কমান্ডটি চালান:এখানে my-custom-image
হল আপনার কাস্টম Docker Image-এর নাম।docker build -t my-custom-image .
docker images
-d
অপশন কনটেইনারটিকে ব্যাকগ্রাউন্ডে চালু করে এবং -p 5000:5000
পোর্ট মেপিং তৈরি করে।docker run -d -p 5000:5000 my-custom-image
http://localhost:5000
-এ যান। আপনি "Hello, Docker!" বার্তা দেখতে পাবেন।কাস্টম Docker Image তৈরি করা Dockerfile
ব্যবহার করে একটি সহজ প্রক্রিয়া। আপনি বেস ইমেজ নির্বাচন, নির্ভরশীলতা ইনস্টল করা, এবং অ্যাপ্লিকেশন ফাইলগুলো কপি করে একটি কাস্টম Image তৈরি করতে পারেন। এই প্রক্রিয়া ডেভেলপমেন্ট ও ডিপ্লয়মেন্টের সময় সাহায্য করে এবং আপনার অ্যাপ্লিকেশনটি অন্যান্য পরিবেশে একইভাবে কাজ করে তা নিশ্চিত করে।
কনটেইনার হল একটি হালকা এবং বিচ্ছিন্ন পরিবেশ যেখানে সফটওয়্যার অ্যাপ্লিকেশন এবং তার সমস্ত নির্ভরশীলতা একত্রে চলতে পারে। এটি মূলত অপারেটিং সিস্টেমের একটি স্তরে চলে এবং এতে সমস্ত প্রয়োজনীয় ফাইল, লাইব্রেরি, এবং কনফিগারেশন অন্তর্ভুক্ত থাকে। কনটেইনারগুলি ভার্চুয়াল মেশিনের তুলনায় অনেক হালকা এবং দ্রুত, কারণ তারা একই কনসিস্টেন্ট কির্নেল শেয়ার করে।
কনটেইনারের লাইফসাইকেল ম্যানেজমেন্ট হল কনটেইনারগুলির সৃষ্টি, পরিচালনা, এবং মোছার প্রক্রিয়া। এটি কনটেইনার পরিচালনার জন্য বিভিন্ন কার্যক্রম অন্তর্ভুক্ত করে। নিচে কনটেইনার লাইফসাইকেলের মূল পর্যায়গুলি উল্লেখ করা হলো:
docker run -d --name my-container my-image
-d
কনটেইনারকে ব্যাকগ্রাউন্ডে চালানোর জন্য এবং --name
কনটেইনারের একটি নাম নির্ধারণ করার জন্য ব্যবহৃত হয়।docker ps
কমান্ড ব্যবহার করে চলমান কনটেইনারগুলির তালিকা দেখা যায় এবং docker logs
দিয়ে লগ তথ্য দেখা যায়।docker stop my-container
docker rm my-container
docker start my-container
কনটেইনার হল একটি হালকা, বিচ্ছিন্ন পরিবেশ যা সফটওয়্যার অ্যাপ্লিকেশন চালানোর জন্য ব্যবহৃত হয়। কনটেইনার লাইফসাইকেল ম্যানেজমেন্ট হল কনটেইনার তৈরির, চালানোর, মনিটরিং করার, থামানোর, মুছে ফেলার এবং পুনরায় চালানোর প্রক্রিয়া। Docker CLI ব্যবহার করে সহজেই এই কার্যক্রমগুলি সম্পন্ন করা যায়, যা উন্নয়ন এবং উৎপাদনের জন্য কার্যকরী।