اگر برنامه نویس باشین یا دستی در دنیای کامپیوتر داشته باشین احتمالا اسم Docker و یا این تعریف ساده از داکر یا کلا سیستم های Container Base رو شنیدین "یک ابزار کارآمد برای بسته بندی کردن ، جابه جا کردن و اجرا برنامه ها". قبل اینکه بخوایم به تعریف خود داکر برسیم باید یک سری کانسپت مثل Containr ها و اینکه چجوری با Vm ها مقایسه میشن رو بدونیم
کانتینر ها و Vm ها در هدفشون یکسان هستن : ایزوله کردن یک برنامه یا application و نیازمندی هاش در قالب یک واحد بسته بندی شده که بتونه هرجایی اجرا بشه.
اگر بیشتر بخوایم بدونیم container ها و Vm ها نیاز ما به سخت افزار فیزیکی رو حذف میکنن ، اجازه میدن که استفاده کارآمد تری از منابع داشته باشیم و در واقع صرفه جویی در انرژی و هزینه رو تجربه کنیم تفاوت اصلی Container و Vm در رویکرد معماریشون هست.
ماشین مجازی در واقع یک شبیهسازی از کامپیوتر واقعی هست که مثل یک کامپیوتر واقعی application هارو اجرا میکنه
Vm ها روی یک کامپیوتر فیزیکی توسط Hypervisor ران میشن. Hypervisor یک مدل از مجازی سازی سخت افزاری یا (hardware virtualization) هست که به شما امکان اجرا از چندین سیستم عامل guest را در یک زمان روی یک سیستم host را فراهم میکنه. که در این حالت سیستم عامل های مجازی نصب شده همانند هر سیستم عامل واقعی امکان استفاده از منابع سخت افزاری موجود درسیستم مانند CPU و یا hard و ram رو داره. Hypervisor در حقیقت اشاره به تامین نیازمندی های سخت افزاری سیسم عامل های guest و مدیریت ارتباط بین اونا و میزان استفادشون از منابع سخت افزاری رو داره. ازHypervisor با عنوان دیگری هم نام برده میشه Vmm نام داره و مخفف کلمات virtual machine manager میباشد و در اصل هر دو به یک موضوع اشاره دارند. در واقع هر guest machine دارای خود application فایل های مورد نیاز از قبیل سیستم عامل فایلای باینری و دیپندنسی هاش و در واقع شامل همه چیه ماشین مجازی دارای منابع کاملا اختصاصی خودش هست اینجا مشخص میشه که وقتی میگیم ماشین مجازی در واقع یک کامپیوتر واقعی هست یعنی چی VirtualBox VMware Workstation 8 مجازی ساز های معرفی هستن که احتمالا باهاشون کار کردین
بر خلاف vm ها که مجازی سازی رو در لایه Hardware انجام میدن سیستم های Container Base مجازی سازی رو در لایه Os انجام میدن.
همونطور که گفته شد Container ها و Vm ها برای تمام اهداف یکی هستند فضای اختصاصی خودشون رو برای پزدازش دارن میتونن کامند هارو اجرا کنن ( به عنوان Root حتی ) network interface ها و حتی ip خودشون رو دارن مقدار زیادی file system دارن و... اما یک تفاوت بزرگ سیستم های Container Base و Vm اینه که کامپیوتر میزبان کرنل اش رو با Container ها به اشتراک میزاره
تو این تصویر میبینین که تمام منابع سیستم عامل کامپیتور میزبان بین Containrr ها به اشتراک گذاشته شده و Container خودشون سخت افزار مجازی و یا به خودی خود سیستم عامل ندارن و تنها چیزی که Container ها بهش نیاز دارن لایبرری ها و فایلای باینری هستش این چیزیه که باعث میشه اصطلاحا Container ها lightweight بشن ... تو این تصویر Docker سیستم Container Base ما هستش و این در واقع چیزی شبیه نقش Hypervisor در مجازی سازی Vm رو انجام میده به جز Docker سیستم های دیگه ای هم هستن که اینکارو برامون انجام میدن که بعدا در موردشون صبحت میکنیم
اگر سوالی داشتید حتما مطرح کنین این مقاله خیلی سطح پایین و پایه ای بود اما برای درک سیستم های Container Base مثل داکر که مفصل در موردش صحبت خواهد شد بسیار مفیده