ডকার কোনও ভার্চুয়ালাইজেশন পদ্ধতি নয়। এটি অন্যান্য সরঞ্জামগুলির উপর নির্ভর করে যা আসলে ধারক-ভিত্তিক ভার্চুয়ালাইজেশন বা অপারেটিং সিস্টেম স্তরের ভার্চুয়ালাইজেশন বাস্তবায়ন করে implement তার জন্য, ডকার প্রথমে LXC ড্রাইভার ব্যবহার করছিলেন, তারপরে libcontainer এ সরিয়েছিলেন যা এখন র্যাঙ্ক নামে পরিবর্তিত হয়েছে। ডকার প্রাথমিকভাবে অ্যাপ্লিকেশন পাত্রে অ্যাপ্লিকেশন স্থাপনের স্বয়ংক্রিয়ভাবে মনোনিবেশ করে। অ্যাপ্লিকেশন পাত্রে একটি একক পরিষেবা প্যাকেজ করার জন্য এবং ডিজাইন করা হয়েছে, যেখানে সিস্টেমের পাত্রে ভার্চুয়াল মেশিনগুলির মতো একাধিক প্রক্রিয়া চালনার জন্য ডিজাইন করা হয়েছে। সুতরাং, ডকারকে ধারকযুক্ত সিস্টেমগুলিতে একটি ধারক পরিচালনা বা অ্যাপ্লিকেশন ডিপ্লোয়মেন্ট সরঞ্জাম হিসাবে বিবেচনা করা হয়।
এটি অন্যান্য ভার্চুয়ালাইজেশনের থেকে কীভাবে আলাদা তা জানতে, আসুন ভার্চুয়ালাইজেশন এবং এর ধরণগুলির মাধ্যমে চলুন। তারপরে, সেখানে পার্থক্য কী তা বোঝা সহজ হবে।
ভার্চুয়ালাইজেশন
এর ধারণাগত আকারে এটি একাধিক অ্যাপ্লিকেশন এক সাথে চলার অনুমতি দেওয়ার জন্য যৌক্তিকভাবে মেইনফ্রেমগুলি বিভক্ত করার একটি পদ্ধতি হিসাবে বিবেচিত হয়েছিল। যাইহোক, সংস্থাগুলি এবং ওপেন সোর্স সম্প্রদায়গুলি সুবিধাপ্রাপ্ত নির্দেশাবলী এক বা অন্য উপায়ে পরিচালনা করার পদ্ধতি সরবরাহ করতে সক্ষম হয়েছিল এবং একক x86 ভিত্তিক সিস্টেমে একাধিক অপারেটিং সিস্টেম একসাথে চালানোর অনুমতি দেয়।
Hypervisor- র
হাইপারভাইসর ভার্চুয়াল পরিবেশ তৈরি করতে পরিচালনা করে যার উপর অতিথি ভার্চুয়াল মেশিনগুলি কাজ করে। এটি গেস্ট সিস্টেমগুলি তদারকি করে এবং প্রয়োজনীয়ত অতিথিদের প্রয়োজনীয় সংস্থানগুলি সরবরাহ করার বিষয়টি নিশ্চিত করে। হাইপারভাইজার শারীরিক মেশিন এবং ভার্চুয়াল মেশিনগুলির মধ্যে বসে এবং ভার্চুয়াল মেশিনগুলিকে ভার্চুয়ালাইজেশন পরিষেবা সরবরাহ করে। এটি উপলব্ধি করতে, এটি ভার্চুয়াল মেশিনে অতিথি অপারেটিং সিস্টেমের ক্রিয়াকলাপকে বাধা দেয় এবং হোস্ট মেশিনের অপারেটিং সিস্টেমে অপারেশনটি এমুলেট করে।
মূলত মেঘে ভার্চুয়ালাইজেশন প্রযুক্তির দ্রুত বিকাশ, জেন, ভিএমওয়্যার প্লেয়ার, কেভিএম ইত্যাদির মতো হাইপারভাইজারগুলির সাহায্যে একক শারীরিক সার্ভারে একাধিক ভার্চুয়াল সার্ভার তৈরি করার অনুমতি দিয়ে এবং ভার্চুয়ালাইজেশনের ব্যবহারকে আরও এগিয়ে নিয়েছে and পণ্য প্রসেসরে যেমন হার্ডওয়্যার সমর্থন অন্তর্ভুক্ত করা, যেমন ইন্টেল ভিটি এবং এএমডি-ভি।
ভার্চুয়ালাইজেশন প্রকার
ভার্চুয়ালাইজেশন পদ্ধতিটি কীভাবে কোনও অতিথির অপারেটিং সিস্টেমে হার্ডওয়্যারকে নকল করে এবং অতিথি অপারেটিং পরিবেশকে অনুকরণ করে তার ভিত্তিতে শ্রেণিবদ্ধ করা যেতে পারে। প্রাথমিকভাবে, ভার্চুয়ালাইজেশন তিন ধরণের হয়:
- অনুকরণ
- Paravirtualization
- ধারক-ভিত্তিক ভার্চুয়ালাইজেশন
অনুকরণ
এমুলেশন, সম্পূর্ণ ভার্চুয়ালাইজেশন হিসাবে পরিচিত, সফ্টওয়্যারটিতে পুরোপুরি ভার্চুয়াল মেশিন ওএস কার্নেল চালায়। এই ধরণের ব্যবহৃত হাইপারভাইজার টাইপ 2 হাইপারভাইজার হিসাবে পরিচিত। এটি হোস্ট অপারেটিং সিস্টেমের শীর্ষে ইনস্টল করা হয়েছে যা অতিথি ওএস কার্নেল কোডটিকে সফ্টওয়্যার নির্দেশাবলীতে অনুবাদ করার জন্য দায়ী। অনুবাদটি সম্পূর্ণ সফ্টওয়্যারটিতে সম্পন্ন হয় এবং এতে কোনও হার্ডওয়ারের জড়িত থাকার প্রয়োজন হয় না। অনুকরণটি এমন কোনও অ-সংশোধিত অপারেটিং সিস্টেম চালানো সম্ভব করে যা পরিবেশকে অনুকরণযোগ্য করে তোলে supports এই ধরণের ভার্চুয়ালাইজেশনের ডাউনসাইড একটি অতিরিক্ত সিস্টেম রিসোর্স ওভারহেড যা অন্যান্য ধরণের ভার্চুয়ালাইজেশনের তুলনায় কর্মক্ষমতা হ্রাসের দিকে নিয়ে যায়।
এই বিভাগের উদাহরণগুলির মধ্যে রয়েছে ভিএমওয়্যার প্লেয়ার, ভার্চুয়ালবক্স, কিউইএমইউ, বোচস, সমান্তরাল ইত্যাদি include
Paravirtualization
প্যারাভিচুয়ালাইজেশন, যা টাইপ 1 হাইপারভাইজার নামে পরিচিত, সরাসরি হার্ডওয়্যার বা "বেয়ার-মেটাল" এ চলে এবং এটি চলমান ভার্চুয়াল মেশিনগুলিতে সরাসরি ভার্চুয়ালাইজেশন পরিষেবা সরবরাহ করে। এটি অপারেটিং সিস্টেম, ভার্চুয়ালাইজড হার্ডওয়্যার এবং সত্যিকারের হার্ডওয়্যারটিকে সর্বোত্তম কর্মক্ষমতা অর্জনে সহযোগিতা করতে সহায়তা করে। এই হাইপারভাইজারগুলির সাধারণত একটি ছোট পদচিহ্ন থাকে এবং তাদের নিজেরাই বিস্তৃত সংস্থান প্রয়োজন হয় না।
এই বিভাগের উদাহরণগুলির মধ্যে জেন, কেভিএম ইত্যাদি রয়েছে include
ধারক-ভিত্তিক ভার্চুয়ালাইজেশন
ধারক-ভিত্তিক ভার্চুয়ালাইজেশন, যা অপারেটিং সিস্টেম-স্তরের ভার্চুয়ালাইজেশন হিসাবেও পরিচিত, একক অপারেটিং সিস্টেমের কার্নেলের মধ্যে একাধিক বিচ্ছিন্ন মৃত্যুদণ্ড কার্যকর করে। এটিতে সর্বোত্তম সম্ভাব্য পারফরম্যান্স এবং ঘনত্ব রয়েছে এবং গতিশীল সংস্থান পরিচালনার বৈশিষ্ট্য রয়েছে। এই ধরণের ভার্চুয়ালাইজেশন দ্বারা সরবরাহ করা বিচ্ছিন্ন ভার্চুয়াল এক্সিকিউশন পরিবেশকে একটি ধারক বলা হয় এবং এটি প্রক্রিয়াগুলির একটি গোষ্ঠী হিসাবে দেখা যেতে পারে।
লিনাক্স কার্নেল সংস্করণ ২.6.২৪-তে যুক্ত হওয়া নামস্থান বৈশিষ্ট্য দ্বারা একটি ধারক ধারণাটি সম্ভব হয়েছে। ধারকটি প্রতিটি প্রক্রিয়াতে তার আইডি যুক্ত করে এবং প্রতিটি সিস্টেমে কলগুলিতে নতুন অ্যাক্সেস নিয়ন্ত্রণ চেক যুক্ত করে। এটি ক্লোন () সিস্টেম কল দ্বারা অ্যাক্সেস করা হয় যা পূর্ববর্তী-বিশ্বব্যাপী নেমস্পেসের পৃথক দৃষ্টান্ত তৈরি করতে দেয়।
নেমস্পেসগুলি বিভিন্ন উপায়ে ব্যবহার করা যেতে পারে তবে সর্বাধিক প্রচলিত পদ্ধতি হল একটি বিচ্ছিন্ন ধারক তৈরি করা যার ধারকের বাইরে দৃশ্যমানতা বা অ্যাক্সেস নেই। ধারকটির অভ্যন্তরে প্রসেসগুলি একটি সাধারণ লিনাক্স সিস্টেমে চলছে বলে মনে হচ্ছে যদিও তারা অন্তর্নিহিত কার্নেলটি অন্য নামের জায়গাগুলিতে অবস্থিত অন্যান্য ধরণের অবজেক্টের জন্য একই প্রক্রিয়াগুলির সাথে ভাগ করে নিচ্ছে। উদাহরণস্বরূপ, নেমস্পেসগুলি ব্যবহার করার সময়, ধারকটির অভ্যন্তরের রুট ব্যবহারকারীকে অতিরিক্ত সুরক্ষা যুক্ত করে পাত্রে বাইরে রুট হিসাবে বিবেচনা করা হবে না।
কন্টেইনার-ভিত্তিক ভার্চুয়ালাইজেশন সক্ষম করার জন্য পরবর্তী প্রধান উপাদান লিনাক্স কন্ট্রোল গ্রুপ (সিগ্রুপ) সাবসিস্টেমটি গ্রুপ প্রক্রিয়াগুলিতে এবং তাদের সামগ্রিক সংস্থান ব্যবহারের ব্যবস্থাপনায় ব্যবহৃত হয়। এটি সাধারণত পাত্রে মেমরি এবং সিপিইউ খরচ সীমাবদ্ধ করতে ব্যবহৃত হয়। যেহেতু একটি ধারকযুক্ত লিনাক্স সিস্টেমে কেবল একটি কার্নেল রয়েছে এবং পাত্রে কার্নেলের সম্পূর্ণ দৃশ্যমানতা রয়েছে, কেবলমাত্র এক স্তরের সংস্থান বরাদ্দ এবং সময়সূচী রয়েছে।
লিনাক্স পাত্রে LXC, LXD, systemd-nspawn, lmctfy, ওয়ার্ডেন, লিনাক্স-ভিএসবার, ওপেনভিজেড, ডকার ইত্যাদি সহ বেশ কয়েকটি পরিচালনার সরঞ্জাম উপলব্ধ
ধারক বনাম ভার্চুয়াল মেশিনগুলি
ভার্চুয়াল মেশিনের বিপরীতে, একটি ধারক অপারেটিং সিস্টেমের কার্নেল বুট করার প্রয়োজন হয় না, তাই পাত্রে এক সেকেন্ডেরও কম সময়ে তৈরি করা যায়। এই বৈশিষ্ট্যটি অন্য ভার্চুয়ালাইজেশন পদ্ধতির তুলনায় ধারক-ভিত্তিক ভার্চুয়ালাইজেশনটিকে অনন্য এবং আকাঙ্ক্ষিত করে তোলে।
যেহেতু কনটেইনার-ভিত্তিক ভার্চুয়ালাইজেশন হোস্ট মেশিনে সামান্য বা কোনও ওভারহেড যুক্ত করে, তাই ধারক-ভিত্তিক ভার্চুয়ালাইজেশনের কাছাকাছি দেশীয় কর্মক্ষমতা রয়েছে
ধারক-ভিত্তিক ভার্চুয়ালাইজেশনের জন্য, অন্যান্য ভার্চুয়ালাইজেশন থেকে আলাদা কোনও অতিরিক্ত সফ্টওয়্যার প্রয়োজন হয় না।
হোস্ট মেশিনের সমস্ত পাত্রে অতিরিক্ত সংস্থান প্রয়োজন হোস্ট মেশিনের শিডিয়ুলার ভাগ করে।
ভার্চুয়াল মেশিন চিত্রের তুলনায় ধারক স্টেটস (ডকার বা এলএক্সসি চিত্রগুলি) আকারে ছোট, তাই ধারক চিত্রগুলি বিতরণ করা সহজ।
পাত্রে রিসোর্স ম্যানেজমেন্ট সিগ্রুপের মাধ্যমে অর্জন করা হয়। সিগ্রুপগুলি কনটেইনারগুলিকে বরাদ্দের চেয়ে বেশি সংস্থান গ্রহণ করার অনুমতি দেয় না। তবে, এখন পর্যন্ত, হোস্ট মেশিনের সমস্ত সংস্থান ভার্চুয়াল মেশিনে দৃশ্যমান, তবে ব্যবহার করা যায় না। এটি একই সাথে চালানো top
বা htop
পাত্রে এবং হোস্ট মেশিনে অনুধাবন করা যায় । সমস্ত পরিবেশ জুড়ে আউটপুট একই রকম দেখাবে।
হালনাগাদ:
ডকার কীভাবে নন-লিনাক্স সিস্টেমে পাত্রে চালায়?
লিনাক্স কার্নেলের বৈশিষ্ট্যগুলির কারণে যদি পাত্রে সম্ভব হয় তবে নন-লিনাক্স সিস্টেমগুলি পাত্রে কীভাবে চালায় তা স্পষ্ট প্রশ্ন। ম্যাক এবং উইন্ডোজের উভয় ডকারই পাত্রে চালনার জন্য লিনাক্স ভিএম ব্যবহার করে। ভার্চুয়াল বক্স ভিএমগুলিতে কনটেইনার চালাতে ব্যবহৃত ডকার টুলবক্স। তবে, সর্বশেষতম ডকারটি উইন্ডোজে হাইপার-ভি এবং ম্যাকের হাইপারভাইসর.ফ্রেমওয়ার্ক ব্যবহার করে।
এখন, আমি ম্যাকের জন্য ডকার কীভাবে পাত্রগুলি বিশদভাবে চালায় তা বর্ণনা করি।
ম্যাকের জন্য ডকার হাইপারভাইসর ক্ষমতা অনুকরণ করতে https://github.com/moby/hyperkit ব্যবহার করে এবং হাইপারকিট তার মূলটিতে হাইপারভাইসর.ফ্রেমওয়ার্ক ব্যবহার করে। হাইপারভাইসর.ফ্রেমে ওয়ার্ক হ'ল ম্যাকের নেটিভ হাইপারভাইজার সলিউশন। হাইপারকিট যথাক্রমে নেমস্পেস নেটওয়ার্ক এবং ফাইল সিস্টেমের জন্য ভিপিএনকিট এবং ডাটাকিট ব্যবহার করে।
লিনাক্স ভিএম যে ডকার ম্যাকে চালিত তা কেবল পঠনযোগ্য। যাইহোক, আপনি এটি চালিয়ে দাবী করতে পারেন:
screen ~/Library/Containers/com.docker.docker/Data/vms/0/tty
।
এখন, আমরা এমনকি এই ভিএম এর কার্নেল সংস্করণও পরীক্ষা করতে পারি:
# uname -a
Linux linuxkit-025000000001 4.9.93-linuxkit-aufs #1 SMP Wed Jun 6 16:86_64 Linux
।
সমস্ত কনটেইনার এই ভিএম এর ভিতরে চলে।
হাইপারভাইসর.ফ্রেমওয়ার্কের কিছু সীমাবদ্ধতা রয়েছে। যে কারণে ডকার docker0
ম্যাকের নেটওয়ার্ক ইন্টারফেস প্রকাশ করে না । সুতরাং, আপনি হোস্টের পাত্রে অ্যাক্সেস করতে পারবেন না। এখন পর্যন্ত docker0
কেবল ভিএম এর অভ্যন্তরে উপলব্ধ।
হাইপার-ভি উইন্ডোজের নেটিভ হাইপারভাইজার। তারা লিনাক্স সিস্টেমটি স্থানীয়ভাবে চালানোর জন্য উইন্ডোজ 10 এর ক্ষমতা অর্জনের চেষ্টা করছে।