ডকার এবং ভার্চুয়াল মেশিনের পরিচিতি
ডকার এবং ভার্চুয়াল মেশিন (ভিএম) উভয়ই অ্যাপ্লিকেশন স্থাপনের জন্য জনপ্রিয় সরঞ্জাম, তবে তারা মৌলিকভাবে ভিন্ন উপায়ে কাজ করে। অনেক ডেভেলপাররা কীভাবে ডকার একটি সম্পূর্ণ ফাইল সিস্টেম, বিচ্ছিন্ন নেটওয়ার্কিং এবং অন্যান্য বৈশিষ্ট্যগুলি সাধারণত VM-এর সাথে যুক্ত ওভারহেড ছাড়াই প্রদান করতে পারে তা নিয়ে বিভ্রান্ত হয়ে পড়ে।
এই নিবন্ধটির লক্ষ্য ডকার এবং ঐতিহ্যবাহী ভার্চুয়াল মেশিনের মধ্যে পার্থক্যগুলি স্পষ্ট করা, ব্যাখ্যা করা যে কেন ডকারকে প্রায়শই সফ্টওয়্যার স্থাপনের জন্য আরও হালকা এবং সহজ হিসাবে বিবেচনা করা হয়। আমরা অন্তর্নিহিত প্রযুক্তি এবং উৎপাদন পরিবেশে ডকার ব্যবহার করার ব্যবহারিক সুবিধাগুলি নিয়ে আলোচনা করব।
| আদেশ | বর্ণনা |
|---|---|
| FROM | একটি ডকার কন্টেইনার তৈরি করার জন্য ব্যবহার করার জন্য বেস ইমেজ নির্দিষ্ট করে। |
| WORKDIR | ডকার কন্টেইনারের ভিতরে ওয়ার্কিং ডিরেক্টরি সেট করে। |
| COPY | হোস্ট মেশিন থেকে ডকার কন্টেইনারে ফাইল বা ডিরেক্টরি কপি করে। |
| RUN | বিল্ড প্রক্রিয়া চলাকালীন ডকার কন্টেইনারে একটি কমান্ড কার্যকর করে। |
| EXPOSE | ডকারকে অবহিত করে যে ধারকটি রানটাইমে নির্দিষ্ট নেটওয়ার্ক পোর্টে শোনে। |
| CMD | যখন এটি শুরু হয় তখন ডকার কন্টেইনারের মধ্যে চালানোর জন্য কমান্ডটি নির্দিষ্ট করে। |
| config.vm.box | ভ্যাগ্রান্ট ভার্চুয়াল মেশিনের জন্য ব্যবহার করার জন্য বেস বক্স সংজ্ঞায়িত করে। |
| config.vm.network | নেটওয়ার্ক সেটিংস কনফিগার করে, যেমন হোস্ট থেকে VM-এ পোর্ট ফরওয়ার্ড করা। |
| config.vm.provision | কিভাবে ভার্চুয়াল মেশিনের ব্যবস্থা করা যায় তা নির্দিষ্ট করে, যেমন সেটআপের সময় শেল স্ক্রিপ্ট চালানো। |
ডকারফাইল এবং ভ্যাগ্রান্টফাইল অন্বেষণ করা হচ্ছে
প্রদত্ত উদাহরণগুলিতে, আমরা প্রথমে প্রদর্শন করেছি কিভাবে একটি Node.js অ্যাপ্লিকেশন স্থাপনের জন্য একটি ডকারফাইল তৈরি করতে হয়। ডকারফাইল এর সাথে বেস ইমেজ নির্দিষ্ট করে শুরু হয় FROM কমান্ড, এই ক্ষেত্রে, একটি অফিসিয়াল Node.js রানটাইম ব্যবহার করে। কন্টেইনারের ভিতরে ওয়ার্কিং ডাইরেক্টরি সেট করার মাধ্যমে অর্জন করা হয় WORKDIR কমান্ড, যা নিশ্চিত করে যে পরবর্তী কমান্ডগুলি নির্দিষ্ট ডিরেক্টরিতে কার্যকর করা হয়েছে। দ্য COPY কমান্ডটি প্যাকেজ.json ফাইল এবং অ্যাপ্লিকেশন কোড কন্টেইনারে স্থানান্তর করতে ব্যবহৃত হয়। দ্য RUN কমান্ড তারপর কন্টেইনারের ভিতরে প্রয়োজনীয় নির্ভরতা ইনস্টল করে। আমরা ব্যবহার করে অ্যাপ্লিকেশন চালানো পোর্ট উন্মুক্ত EXPOSE কমান্ড, এবং অবশেষে, CMD কমান্ড কন্টেইনার শুরু হলে অ্যাপ্লিকেশন চালানোর কমান্ড সংজ্ঞায়িত করে।
Vagrantfile উদাহরণের জন্য, কনফিগারেশনের সাথে বেস বক্স নির্দিষ্ট করে শুরু হয় config.vm.box কমান্ড, এখানে উবুন্টু 20.04 ব্যবহার করে। নেটওয়ার্ক সেটিংস ব্যবহার করে কনফিগার করা হয় config.vm.network কমান্ড, যা হোস্টের পোর্ট 8080 কে গেস্ট VM-এ পোর্ট 80-এ ফরওয়ার্ড করে, VM-তে চলমান পরিষেবাগুলিতে বাহ্যিক অ্যাক্সেসের অনুমতি দেয়। দ্য config.vm.provision কমান্ড একটি শেল স্ক্রিপ্ট চালানোর জন্য ব্যবহৃত হয় যা প্যাকেজ তালিকা আপডেট করে এবং Apache2 ইনস্টল করে, প্রয়োজনীয় সফ্টওয়্যার সহ VM-এর ব্যবস্থা করে। এই কমান্ডগুলি একটি VM পরিবেশ সেট আপ করার জন্য মৌলিক পদক্ষেপগুলি প্রদর্শন করে, ডকার দ্বারা প্রদত্ত কন্টেইনারাইজড পরিবেশের তুলনায় আরও ঐতিহ্যগত পদ্ধতির প্রস্তাব করে।
Node.js অ্যাপ্লিকেশন স্থাপনার জন্য একটি ডকারফাইল তৈরি করা
এই উদাহরণটি দেখায় যে কীভাবে একটি Node.js অ্যাপ্লিকেশনের জন্য একটি ডকারফাইল তৈরি করতে হয়, একটি ডকার কন্টেইনারের মধ্যে অ্যাপ্লিকেশনটি তৈরি এবং চালানোর পদক্ষেপগুলি প্রদর্শন করে৷
# Use an official Node.js runtime as a parent imageFROM node:14# Set the working directory inside the containerWORKDIR /usr/src/app# Copy package.json and package-lock.json to the containerCOPY package*.json ./# Install the application dependencies inside the containerRUN npm install# Copy the rest of the application code to the containerCOPY . .# Expose the port the app runs onEXPOSE 8080# Define the command to run the appCMD ["node", "app.js"]
Vagrant ব্যবহার করে একটি ভার্চুয়াল মেশিন সেট আপ করা
এই উদাহরণটি দেখায় কিভাবে একটি সাধারণ Vagrantfile দিয়ে Vagrant ব্যবহার করে একটি ভার্চুয়াল মেশিন সেট আপ করতে হয়, একটি VM পরিবেশ সংজ্ঞায়িত এবং কনফিগার করার প্রক্রিয়া প্রদর্শন করে।
# -*- mode: ruby -*-# vi: set ft=ruby :# All Vagrant configuration is done below. The "2" in Vagrant.configure# configures the configuration version (we support older styles for# backwards compatibility). Please don't change it unless you know what# you're doing.Vagrant.configure("2") do |config|# Use Ubuntu 20.04 as the base boxconfig.vm.box = "ubuntu/focal64"# Forward port 8080 on the host to port 80 on the guestconfig.vm.network "forwarded_port", guest: 80, host: 8080# Provision the VM with a shell scriptconfig.vm.provision "shell", inline: <<-SHELLsudo apt-get updatesudo apt-get install -y apache2SHELLend
ডকার এবং ভার্চুয়াল মেশিন বোঝা
ডকার এবং ভার্চুয়াল মেশিনের (ভিএম) মধ্যে প্রধান পার্থক্যগুলির মধ্যে একটি হল তারা কীভাবে সিস্টেম সংস্থানগুলি ব্যবহার করে। ভিএমগুলি একটি হাইপারভাইজারে চালিত হয়, যা হার্ডওয়্যারকে অনুকরণ করে এবং একাধিক অপারেটিং সিস্টেমকে একটি হোস্ট মেশিনে একসাথে চালানোর অনুমতি দেয়। এর জন্য প্রতিটি VM-কে একটি সম্পূর্ণ গেস্ট অপারেটিং সিস্টেম, নিজস্ব লাইব্রেরি এবং বাইনারি অন্তর্ভুক্ত করতে হবে। এটি শুধুমাত্র গুরুত্বপূর্ণ সিস্টেম সংস্থানগুলিই ব্যবহার করে না তবে স্থাপনা এবং রক্ষণাবেক্ষণের সামগ্রিক আকার এবং জটিলতাও বাড়ায়।
বিপরীতে, ডকার কন্টেইনারাইজেশন প্রযুক্তির ব্যবহার করে, যা একাধিক পাত্রকে একই অপারেটিং সিস্টেম কার্নেল ভাগ করতে দেয়। প্রতিটি ধারক ব্যবহারকারী স্থান একটি বিচ্ছিন্ন প্রক্রিয়া হিসাবে সঞ্চালিত হয়. এর মানে হল যে কন্টেইনারগুলি VM-এর তুলনায় শুরু করার জন্য অনেক হালকা এবং দ্রুত, কারণ তাদের একটি সম্পূর্ণ OS বুট করার প্রয়োজন নেই। ডকার একটি স্তরযুক্ত ফাইল সিস্টেমের মাধ্যমে ফাইল সিস্টেম বিচ্ছিন্নতা অর্জন করে, যেখানে প্রতিটি কন্টেইনারের একটি বেস ইমেজের উপরে নিজস্ব ফাইল সিস্টেম স্তর থাকে। নেটওয়ার্ক বিচ্ছিন্নতা নেমস্পেস ব্যবহার করে পরিচালনা করা হয়, ডকারকে VM-এর সাথে যুক্ত ওভারহেড ছাড়াই প্রতিটি কন্টেইনারের জন্য বিচ্ছিন্ন নেটওয়ার্কিং পরিবেশ প্রদান করার অনুমতি দেয়।
ডকার এবং ভার্চুয়াল মেশিন সম্পর্কিত প্রায়শ জিজ্ঞাস্য প্রশ্নাবলী
- ডকার এবং ভিএম এর মধ্যে প্রাথমিক পার্থক্য কি?
- ডকার হোস্ট ওএস কার্নেল ভাগ করার জন্য কন্টেইনারাইজেশন ব্যবহার করে, এটিকে হালকা এবং দ্রুত করে তোলে, যেখানে ভিএমগুলির জন্য একটি সম্পূর্ণ অতিথি ওএস এবং একটি হাইপারভাইজার প্রয়োজন।
- কেন ডকার পাত্রে আরো দক্ষ বলে মনে করা হয়?
- কন্টেইনারগুলি হোস্ট ওএস কার্নেল ভাগ করে এবং ন্যূনতম ওভারহেড থাকে, যা দ্রুত স্টার্টআপ সময় এবং দক্ষ সংস্থান ব্যবহারের অনুমতি দেয়।
- ডকার কিভাবে ফাইল সিস্টেম বিচ্ছিন্নতা অর্জন করে?
- ডকার একটি স্তরযুক্ত ফাইল সিস্টেম ব্যবহার করে, যেখানে প্রতিটি পাত্রে একটি বেস ইমেজের উপরে নিজস্ব ফাইল সিস্টেম স্তর থাকে।
- ভিএম-এর প্রসঙ্গে হাইপারভাইজার কী?
- একটি হাইপারভাইজার হল এমন সফ্টওয়্যার যা হার্ডওয়্যারকে অনুকরণ করে, একাধিক অপারেটিং সিস্টেমকে একক হোস্ট মেশিনে একসাথে চালানোর অনুমতি দেয়।
- কিভাবে ডকার নেটওয়ার্কিং বিচ্ছিন্নতা পরিচালনা করে?
- ডকার প্রতিটি কন্টেইনারের জন্য বিচ্ছিন্ন নেটওয়ার্কিং পরিবেশ প্রদান করতে নামস্থান ব্যবহার করে।
- কেন একটি ডকার ইমেজে সফ্টওয়্যার স্থাপন করা VM এর চেয়ে সহজ?
- ডকার ইমেজগুলি সমস্ত নির্ভরতা এবং কনফিগারেশনকে এনক্যাপসুলেট করে, বিভিন্ন পরিবেশে ধারাবাহিকতা নিশ্চিত করে।
- ডকারের জন্য কিছু সাধারণ ব্যবহারের ক্ষেত্রে কি কি?
- ডকার সাধারণত মাইক্রোসার্ভিসেস আর্কিটেকচার, ক্রমাগত ইন্টিগ্রেশন/কন্টিনিউয়াস ডিপ্লয়মেন্ট (CI/CD), এবং বিচ্ছিন্ন উন্নয়ন পরিবেশের জন্য ব্যবহৃত হয়।
- ডকার কন্টেইনার কি কোনো ওএসে চলতে পারে?
- ডকার কন্টেইনারগুলি ডকারকে সমর্থন করে এমন যে কোনও ওএসে চলতে পারে তবে তারা হোস্ট ওএস কার্নেল ভাগ করে।
- ডকারে একটি বেস ইমেজ কি?
- একটি বেস ইমেজ হল ডকার কন্টেইনার তৈরির সূচনা বিন্দু, প্রায়শই ওএস এবং মৌলিক নির্ভরতা সহ।
ডকার বনাম ভার্চুয়াল মেশিনের সারসংক্ষেপ
ডকার এবং ভার্চুয়াল মেশিনের তুলনা করার ক্ষেত্রে, প্রাথমিক পার্থক্যটি তাদের সম্পদের ব্যবহার এবং স্থাপনার দক্ষতার মধ্যে রয়েছে। ভার্চুয়াল মেশিনগুলি একটি সম্পূর্ণ অতিথি অপারেটিং সিস্টেম এবং হাইপারভাইজার দিয়ে কাজ করে, যা উচ্চ সম্পদ খরচের দিকে পরিচালিত করে। বিপরীতভাবে, ডকার কন্টেইনারগুলি হোস্ট ওএস কার্নেল ভাগ করে, যার ফলে আরও হালকা এবং চটপটে সমাধান হয়। ডকার একটি স্তরযুক্ত ফাইল সিস্টেম এবং নেটওয়ার্কিং নেমস্পেসের মাধ্যমে বিচ্ছিন্ন পরিবেশ অর্জন করে, এটি সংযুক্ত ওভারহেড ছাড়াই VM-তে অনুরূপ কার্যকারিতা প্রদান করার অনুমতি দেয়। এটি ডকার চিত্রগুলিতে সফ্টওয়্যার স্থাপনকে আরও দক্ষ, সামঞ্জস্যপূর্ণ এবং বিভিন্ন উত্পাদন পরিবেশে পরিচালনা করা সহজ করে তোলে।
ডকার এবং ভার্চুয়াল মেশিন সম্পর্কে চূড়ান্ত চিন্তা
উপসংহারে, ডকারের কনটেইনারাইজেশনের ব্যবহার ঐতিহ্যগত ভার্চুয়াল মেশিনগুলির তুলনায় সম্পদের ব্যবহার কমিয়ে এবং স্থাপনার প্রক্রিয়াগুলিকে সহজ করে একটি উল্লেখযোগ্য সুবিধা প্রদান করে। হোস্ট ওএস কার্নেল ভাগ করে এবং বিচ্ছিন্ন ফাইল সিস্টেম এবং নেটওয়ার্কিং ব্যবহার করে, ডকার আধুনিক অ্যাপ্লিকেশন স্থাপনার জন্য একটি শক্তিশালী কিন্তু হালকা সমাধান প্রদান করে। এই পার্থক্যগুলি বুঝতে বিকাশকারীদের তাদের প্রয়োজনের জন্য সঠিক সরঞ্জাম চয়ন করতে সাহায্য করতে পারে, দক্ষ এবং মাপযোগ্য অ্যাপ্লিকেশন পরিচালনা নিশ্চিত করতে।