আমি ডকারের ধারকটি কী তা সম্পর্কে এবং বেশিরভাগ ভিতরে ভিতরে কী চলছে তার আশেপাশে বেশ কয়েকবার বিভ্রান্তি শুনেছি, ডকারের ধারকটির ভিতরে থাকা কমান্ড ও প্রক্রিয়াগুলির বিষয়ে যা আমি প্রার্থনা করি।
কেউ কি ঘটছে তার একটি উচ্চ স্তরের ওভারভিউ সরবরাহ করতে পারেন?
আমি ডকারের ধারকটি কী তা সম্পর্কে এবং বেশিরভাগ ভিতরে ভিতরে কী চলছে তার আশেপাশে বেশ কয়েকবার বিভ্রান্তি শুনেছি, ডকারের ধারকটির ভিতরে থাকা কমান্ড ও প্রক্রিয়াগুলির বিষয়ে যা আমি প্রার্থনা করি।
কেউ কি ঘটছে তার একটি উচ্চ স্তরের ওভারভিউ সরবরাহ করতে পারেন?
উত্তর:
ডকার ভার্চুয়ালাইজেশন বালতিতে ফেলে দেওয়া হয়, কারণ লোকেরা ধারণা করে যে এটি কোনওরকমভাবে হার্ডওয়্যারটির নীচে ভার্চুয়ালাইজেশন করছে। এটি একটি মিসনোমার যা ডোকার মূলত পাত্রে শব্দটি ব্যবহার করে যা পরিভাষা ব্যবহার করে from
তবে ডকার কোনও সিস্টেমের হার্ডওয়্যারকে ভার্চুয়ালাইজ করার ক্ষেত্রে যাদুকর কিছু করছে না। বরং এটি লিনাক্স কার্নেলের মূল সুবিধার চারপাশে "বেড়া" নির্মাণের ক্ষমতাকে কাজে লাগিয়েছে, যা নেটওয়ার্ক, ফাইল সিস্টেম এবং অনুমতিগুলির (যেমন অন্যান্য জিনিসের মধ্যে) সাথে যোগাযোগের জন্য একটি প্রক্রিয়া আপনাকে ইন্টারঅ্যাক্ট করছে তা জানাতে সহায়তা করে you're একটি সম্পূর্ণ ক্রিয়ামূলক সিস্টেম সহ।
এখানে একটি উদাহরণ রয়েছে যা চিত্রিত করে যা আমরা যখন ডকার পাত্রে শুরু করি এবং তারপরে এটির অনুরোধের মাধ্যমে প্রবেশ করি তখন কী চলছে /bin/bash।
$ docker run -it ubuntu:latest /bin/bash
root@c0c5c54062df:/#
এখন এই ধারকটির ভিতরে থেকে, যদি আমরা চালাই ps -eaf:
অন্য একটি টার্মিনাল ট্যাবে স্যুইচ করা যেখানে আমরা হোকার সিস্টেমে লগইন করছি যা ডকার কনটেইনারটি হোস্ট করছে, আমরা ধারকটি "প্রকৃতপক্ষে" গ্রহণ করার প্রক্রিয়া স্থানটি দেখতে পাচ্ছি:
এখন আমরা যদি ডকার ট্যাবে ফিরে যাই এবং এর মধ্যে বেশ কয়েকটি প্রক্রিয়া চালু করি এবং সেগুলি সমস্ত ব্যাকগ্রাউন্ড করি তবে আমরা দেখতে পাচ্ছি যে আমাদের প্রাথমিক প্রাথমিক বাশ প্রক্রিয়াটির অধীনে চলমান বেশ কয়েকটি শিশু প্রক্রিয়া রয়েছে যা আমরা মূলত ডকার ধারক প্রবর্তনের অংশ হিসাবে শুরু করেছি।
দ্রষ্টব্য: প্রক্রিয়াগুলি 4 টি sleep 1000কমান্ড যা পটভূমি হচ্ছে।
নথিভুক্ত পাত্রে কীভাবে প্রক্রিয়াগুলি 48-51 এর প্রসেস আইডি (পিআইডি) বরাদ্দ করা হয় তা লক্ষ্য করুন। তাদের ps -eafফলাফল হিসাবে তাদের দেখুন :
যাইহোক, এই পরবর্তী চিত্রের সাথে ডকার যে "ম্যাজিক" সম্পাদন করছে তার অনেকটাই প্রকাশিত হয়েছে।
দেখুন 4 টি sleep 1000প্রক্রিয়াগুলি কীভাবে আমাদের আসল বাশ প্রক্রিয়াতে কেবলমাত্র শিশু প্রক্রিয়া? এছাড়াও লক্ষ করুন যে আমাদের আসল ডকার পাত্রটি /bin/bashআসলে ডকার ডিমনও একটি শিশু প্রক্রিয়া।
এখন যদি আমাদের আসল sleep 1000কমান্ডগুলি শেষ হওয়ার জন্য 1000+ সেকেন্ড অপেক্ষা করতে হয় এবং তারপরে আরও 4 টি নতুন চালানো হয়, এবং অন্য ডকারের ধারকটিকে এভাবে শুরু করা হয়:
$ docker run -it ubuntu:latest /bin/bash
root@450a3ce77d32:/#
হোস্ট কম্পিউটারের আউটপুটটি ps -eafদেখতে এরকম হবে:
এবং অন্যান্য ডকার পাত্রে সমস্ত ডকার ডিমন অধীনে প্রক্রিয়া হিসাবে প্রদর্শিত হবে।
সুতরাং আপনি দেখুন, ডকার সত্যই ভার্চুয়ালাইজিং করছে না ( প্রচলিত অর্থে ), এটি বিভিন্ন কার্নেল সংস্থার চারপাশে "বেড়া" তৈরি করছে এবং তাদের প্রদত্ত প্রক্রিয়া + শিশুদের জন্য দৃশ্যমানতা সীমাবদ্ধ করছে।
ধারকটির ভিতরে , আপনার প্রক্রিয়াগুলি পৃথক করা উচিত (পৃথক করে রাখা)। আসলে আপনার কোনও প্রক্রিয়া দেখতে পাওয়া উচিত নয় তবে আপনার নির্দিষ্ট করা (কমপক্ষে একটি শেল)। এটি "সামাজিকতা" পরীক্ষার জন্য নয়। ক্রুটের সাথে একমাত্র মিল হ'ল হোস্ট কার্নেলটি ব্যবহৃত হয়। হোস্টে চলার চেয়ে আপনার যদি কিছু আলাদা করতে বা প্ল্যাটফর্ম আর্কিটেকচার সফ্টওয়্যারটির বিভিন্ন সংস্করণ ব্যবহার করতে হয় তবে ডকার দুর্দান্ত। (জাভার খুব পুরানো সংস্করণ বা পাইথনের আলাদা কাঁটাচামচ বলে)। তীব্রভাবে সচেতন হোন যে আপনি যে ফোল্ডার এবং বাইনারিগুলি নিয়ে কাজ করছেন সেটি হোস্টের মতো নাও হতে পারে। এটি একই / বিন ফোল্ডার ইত্যাদি নয়
সম্পাদনা: ভিএম এর চেয়ে ক্রুটের সাথে মিল।