نمای کلی داکر
Docker یک پلت فرم باز برای توسعه، حمل و نقل و اجرای برنامه ها است. Docker شما را قادر می سازد تا برنامه های کاربردی خود را از زیرساخت خود جدا کنید تا بتوانید نرم افزار را به سرعت تحویل دهید. با Docker، می توانید زیرساخت های خود را به همان روشی که برنامه های خود را مدیریت می کنید، مدیریت کنید. با بهره گیری از متدولوژی های Docker برای ارسال، آزمایش و استقرار کد، می توانید تاخیر بین نوشتن کد و اجرای آن را به میزان قابل توجهی کاهش دهید.
پلتفرم داکر
Docker توانایی بسته بندی و اجرای یک برنامه را در یک محیط کاملاً ایزوله به نام کانتینر فراهم می کند. ایزوله و امنیت به شما امکان می دهد چندین کانتینر را به طور همزمان روی یک میزبان مشخص اجرا کنید. کانتینرها سبک وزن هستند و شامل همه چیزهایی هستند که برای اجرای برنامه لازم است، بنابراین نیازی نیست به آنچه روی هاست نصب شده است اعتماد کنید. میتوانید در حین کار، کانتینرها را به اشتراک بگذارید، و مطمئن باشید که همه کسانی که با آنها اشتراکگذاری میکنید، همان کانتینری را دریافت میکنند که به یک روش کار میکند.
Docker ابزار و بستری برای مدیریت چرخه حیات کانتینرهای شما فراهم می کند:
- برنامه خود و اجزای پشتیبانی کننده آن را با استفاده از کانتینرها توسعه دهید.
- کانتینر واحدی برای توزیع و آزمایش برنامه شما می شود.
- هنگامی که آماده شدید، برنامه خود را در محیط تولید خود، به عنوان یک کانتینر یا یک سرویس هماهنگ، مستقر کنید. چه محیط تولید شما یک مرکز داده محلی باشد، یک ارائه دهنده ابر یا ترکیبی از این دو، این کار یکسان است.
برای چه کاری میتوانم از داکر استفاده کنم؟
تحویل سریع و مداوم برنامه های شما
Docker چرخه عمر توسعه را با اجازه دادن به توسعه دهندگان برای کار در محیط های استاندارد شده با استفاده از کانتینرهای محلی که برنامه ها و خدمات شما را ارائه می دهند، ساده می کند. کانتینرها برای یکپارچه سازی مداوم و گردش کار تحویل مداوم (CI/CD) عالی هستند.
سناریوی مثال زیر را در نظر بگیرید:
- توسعه دهندگان شما کد را به صورت محلی می نویسند و کار خود را با استفاده از کانتینرهای Docker با همکاران خود به اشتراک می گذارند.
- آنها از Docker استفاده میکنند تا برنامههای خود را به محیط آزمایشی هدایت کنند و تستهای خودکار و دستی را اجرا کنند.
- زمانی که توسعهدهندگان باگها را پیدا میکنند، میتوانند آنها را در محیط توسعه برطرف کرده و آنها را برای آزمایش و اعتبارسنجی مجدداً در محیط آزمایش قرار دهند.
- وقتی آزمایش کامل شد، رساندن مشکل به مشتری به سادگی فشار دادن تصویر به روز شده به محیط تولید است.
استقرار و مقیاس بندی پاسخگو
پلت فرم مبتنی بر کانتینر Docker امکان بارهای کاری بسیار قابل حمل را فراهم می کند. کانتینرهای Docker میتوانند روی لپتاپ محلی یک توسعهدهنده، روی ماشینهای فیزیکی یا مجازی در مرکز داده، بر روی ارائهدهندگان ابری یا در ترکیبی از محیطها اجرا شوند.
حملپذیری و ماهیت سبک Docker همچنین مدیریت پویا بارهای کاری را آسان میکند، برنامهها و سرویسها را بر اساس نیازهای کسبوکار، در زمان واقعی کاهش میدهد یا از بین میبرد.
اجرای بارهای کاری بیشتر روی همان سخت افزار
Docker سبک و سریع است. این یک جایگزین مناسب و مقرون به صرفه برای ماشین های مجازی مبتنی بر Hypervisor ارائه می دهد، بنابراین می توانید از ظرفیت سرور خود برای دستیابی به اهداف تجاری خود استفاده کنید. Docker برای محیطهای با چگالی بالا و برای استقرارهای کوچک و متوسط که در آن باید کارهای بیشتری با منابع کمتر انجام دهید، عالی است.
معماری داکر
داکر از معماری کلاینت-سرور استفاده می کند. مشتری داکر با دیمون داکر صحبت میکند، که کارهای سنگین ساخت، اجرا و توزیع کانتینرهای داکر شما را انجام میدهد. کلاینت داکر و دیمون می توانند بر روی یک سیستم اجرا شوند، یا می توانید یک کلاینت داکر را به یک شبح داکر از راه دور متصل کنید. مشتری داکر و دیمون با استفاده از یک REST API، از طریق سوکت های یونیکس یا یک رابط شبکه با هم ارتباط برقرار می کنند. یکی دیگر از سرویس گیرندگان Docker Docker Compose است که به شما امکان می دهد با برنامه هایی که از مجموعه ای از کانتینرها تشکیل شده اند کار کنید.
دیمون داکر
Daemon Docker ( dockerd) به درخواست های Docker API گوش می دهد و اشیاء Docker مانند تصاویر، کانتینرها، شبکه ها و حجم ها را مدیریت می کند. یک دیمون همچنین می تواند برای مدیریت سرویس های Docker با دیگر دیمون ها ارتباط برقرار کند.
مشتری داکر
مشتری داکر ( docker) راه اصلی تعامل بسیاری از کاربران داکر با داکر است. هنگامی که از دستوراتی مانند استفاده می کنید docker run، کلاینت این دستورات را به می فرستد dockerdکه آنها را اجرا می کند. این dockerدستور از Docker API استفاده می کند. کلاینت داکر می تواند با بیش از یک دیمون ارتباط برقرار کند.
داکر دسکتاپ
Docker Desktop یک برنامه کاربردی با قابلیت نصب آسان برای محیط مک، ویندوز یا لینوکس شما است که به شما امکان میدهد برنامهها و میکروسرویسهای کانتینری را بسازید و به اشتراک بگذارید. Docker Desktop شامل Daemon Docker ( dockerd)، مشتری Docker ( docker)، Docker Compose، Docker Content Trust، Kubernetes و Credential Helper است. برای اطلاعات بیشتر، Docker Desktop را ببینید .
داکر رجیستر
یک رجیستری داکر تصاویر داکر را ذخیره می کند. داکر هاب یک رجیستری عمومی است که همه می توانند از آن استفاده کنند و داکر به طور پیش فرض به دنبال تصاویر در داکر هاب می گردد. حتی می توانید رجیستری خصوصی خود را اجرا کنید.
docker pullهنگامی که از دستورات یا استفاده می کنید docker run، داکر تصاویر مورد نیاز را از رجیستری پیکربندی شده شما بیرون می کشد. هنگامی که از دستور استفاده می کنید docker push، Docker تصویر شما را به رجیستری پیکربندی شده شما فشار می دهد.
اشیاء داکر
هنگامی که از Docker استفاده می کنید، در حال ایجاد و استفاده از تصاویر، کانتینرها، شبکه ها، حجم ها، پلاگین ها و سایر اشیاء هستید. در این بخش مروری کوتاه بر برخی از آن اشیا است.
ایمیج داکر
یک تصویر یک الگوی فقط خواندنی با دستورالعملهایی برای ایجاد یک ظرف Docker است. اغلب، یک تصویر بر اساس یک تصویر دیگر، با برخی سفارشیسازیهای اضافی است. برای مثال، ممکن است تصویری بسازید که بر اساس ubuntuتصویر باشد، اما وب سرور آپاچی و برنامه شما و همچنین جزئیات پیکربندی مورد نیاز برای اجرای برنامه شما را نصب کند.
شما ممکن است تصاویر خود را ایجاد کنید یا فقط از تصاویری استفاده کنید که توسط دیگران ایجاد شده و در یک رجیستری منتشر شده اند. برای ساختن تصویر خود، یک Dockerfile با یک نحو ساده برای تعریف مراحل مورد نیاز برای ایجاد تصویر و اجرای آن ایجاد میکنید. هر دستورالعمل در Dockerfile یک لایه در تصویر ایجاد می کند. وقتی Dockerfile را تغییر میدهید و تصویر را بازسازی میکنید، تنها لایههایی که تغییر کردهاند بازسازی میشوند. این بخشی از چیزی است که تصاویر را در مقایسه با سایر فناوری های مجازی سازی بسیار سبک، کوچک و سریع می کند.
کانتینر داکر
کانتینر یک نمونه قابل اجرا از یک تصویر است. میتوانید با استفاده از Docker API یا CLI یک محفظه ایجاد، شروع، توقف، حرکت یا حذف کنید. میتوانید یک ظرف را به یک یا چند شبکه متصل کنید، فضای ذخیرهسازی را به آن متصل کنید یا حتی یک تصویر جدید بر اساس وضعیت فعلی آن ایجاد کنید.
به طور پیش فرض، یک کانتینر به خوبی از سایر کانتینرها و ماشین میزبان آن جدا شده است. میتوانید کنترل کنید که شبکه یک کانتینر، ذخیرهسازی یا سایر زیرسیستمهای زیرین از کانتینرهای دیگر یا از ماشین میزبان چقدر جدا شده است.
یک ظرف با تصویر آن و همچنین هر گزینه پیکربندی که هنگام ایجاد یا شروع به آن ارائه می دهید، تعریف می شود. وقتی یک ظرف برداشته میشود، هر تغییری در وضعیت آن که در ذخیرهسازی دائمی ذخیره نمیشود ناپدید میشود.
مثال دستور اجرای docker
دستور زیر یک ubuntuکانتینر را اجرا می کند، به صورت تعاملی به جلسه خط فرمان محلی شما متصل می شود و bin/bash/ اجرا می کند.
$ docker run -i -t ubuntu /bin/bash
هنگامی که این دستور را اجرا می کنید، موارد زیر اتفاق می افتد (با فرض اینکه از پیکربندی پیش فرض رجیستری استفاده می کنید):
اگر تصویر ابونتو را به صورت محلی ندارید داکر ، آن را از رجیستری پیکربندی شده شما خارج می کند، گویی که docker pull ubuntuبه صورت دستی اجرا شده است.
Docker یک کانتینر جدید ایجاد می کند، گویی که شما یک docker container createفرمان را به صورت دستی اجرا کرده اید.
Docker یک فایل سیستم خواندن و نوشتن را به کانتینر به عنوان لایه نهایی آن اختصاص می دهد. این به یک ظرف در حال اجرا اجازه می دهد تا فایل ها و دایرکتوری ها را در سیستم فایل محلی خود ایجاد یا تغییر دهد.
Docker یک رابط شبکه برای اتصال کانتینر به شبکه پیش فرض ایجاد می کند، زیرا شما هیچ گزینه شبکه ای را مشخص نکرده اید. این شامل اختصاص یک آدرس IP به کانتینر است. به طور پیش فرض، کانتینرها می توانند با استفاده از اتصال شبکه دستگاه میزبان به شبکه های خارجی متصل شوند.
داکر کانتینر را راه اندازی کرده و bin/bash/ را اجرا می کند . از آنجایی که کانتینر به صورت تعاملی اجرا می شود و به ترمینال شما متصل است (به دلیل وجود پرچم -iو -t)، می توانید ورودی را با استفاده از صفحه کلید خود ارائه دهید در حالی که Docker خروجی را در ترمینال شما ثبت می کند.
هنگامی که exit را برای پایان دادن به دستور /bin/bash اجرا می کنید، کانتینر متوقف می شود اما حذف نمی شود. می توانید آن را دوباره شروع کنید یا آن را حذف کنید.
تکنولوژی زیربنایی داکر
Docker به زبان برنامه نویسی Go نوشته شده است و از چندین ویژگی هسته لینوکس برای ارائه عملکرد آن بهره می برد. داکر از فناوری به نام namespacesبرای ارائه فضای کاری مجزا به نام کانتینر استفاده می کند. هنگامی که یک کانتینر را اجرا می کنید، داکر مجموعه ای از فضاهای نام را برای آن کانتینر ایجاد می کند.
این فضاهای نام لایه ای از انزوا را ارائه می دهند. هر یک از جنبه های یک کانتینر در یک فضای نام جداگانه اجرا می شود و دسترسی آن به آن فضای نام محدود می شود.
منابع
https://docs.docker.com/get-started/overview/
معرفی کلی داکر