معرفی داکر
داکر (Docker) یک پلتفرم متن باز است که بر مبنای سیستمعامل لینوکس راهاندازی شده است. اما اگر از سیستمعامل دیگری همانند ویندوز و مک استفاده کنید میتوانید از داکر و قابلیتهای آن نیز بهرمند بشید.
داکر با استفاده از دو قابلیت مهم موجود در کرنل لینوکس به نامهای Cgroups و Namespace امکانی را فراهم آورده است که پروسهها و نرمافزارها به صورت مجزا در محیط کاملا ایزولهای بر روی کرنل لینوکس راهاندازی شود که به این محیط و بستهی ایزوله، کانتینر (Container) میگویند. البته تا اینجای کار سرویس داکر کار خاصی انجام نداده و این موضوع رو تمامی Linux Containersها نیز دارا هستند. اما داکر امکانی را فراهم آورد که بتوان به راحتی با این قابلیت ارتباط برقرار کرده و از آن نهایت استفاده را کرد.
مجموعه ابزارهای داکر به طور کلی توسعه و انتشار نرم افزارها را ساده میکند و این کار را از طریق فراهم کردن یک راه حل مناسب برای ساخت و به اشتراک گذاشتن تصویری قابل اجرا از یک برنامه کاربردی انجام میدهد. یک تصویر داکر همچنین بخشهای زیادی از سیستم عامل بجز هسته آن را شامل میشود.
بخشهای اصلی اکوسیستم داکر
مجموعه ابزارها و سرویسهای داکر را میتوان در سه بخش اصلی دسته بندی کرد:
- ساخت: تولید یک تصویر (image) داکر که یک برنامه کاربردی به همراه تمام وابستگی های آن را در خود دارد. هر تصویر معمولا با ساز و کار
docker build
از روی یکDockerfile
و با اضافه کردن یک یا چند برنامه کاربردی به یک تصویر پایه ساخته میشود. - اجرا: کانتینرها (container) که در واقع تصاویر در حال اجرا هستند را میتوان به سادگی و با سرعت زیاد در تعداد بالا ایجاد و سپس متوقف و یا کاملا حذف کرد. مزیت اصلی داکر در این بخش جداسازی کامل این کانتینرها از یکدیگر در زمان اجراست، به طوری که هر یک از آنها گمان میکنند روی یک سیستم عامل کاملا جداگانه اجرا شده اند.
- انتشار: تصاویر تولید شده در داکر از طریق سرویسی به نام registry و با کمک دستورات
docker push
وdocker pull
به آسانی قابل انتشار و به اشتراک گذاری هستند. همچنین سرویس آنلاین Docker Hub یک نمونه از این registry است که برای مصارف عمومی به صورت رایگان در اختیار کاربران قرار داده شده است.
برای اینکه بتوانید با این سه جنبه از داکر کار کنید نیاز دارید برنامه موتور داکر به نام docker daemon
را روی سیستم خودتان یا در یک ماشین مجازی اجرا کنید. این برنامه در واقع تمام عملیاتهای درخواست شده از داکر برای ساخت، اجرا و انتشار کانتینرها را انجام میدهد. علاوه بر این، شما به یک برنامه دیگر به نام docker client نیاز دارید که دستورات را از خط فرمان میگیرد و به موتور داکر منتقل میکند. در سیستم عامل لینوکس هر دو این برنامه ها در قالب یک فایل اجرایی به نام docker
به شما ارایه میشود. اما در سیستم عاملهای دیگر مانند ویندوز و Mac OS X تنها بخش client در فایل اجرایی docker
وجود دارد و شما نیاز دارید سرویس docker daemon
را در یک سیستم عامل جداگانه، که در حال حاضر باید حتما لینوکس باشد، اجرا کنید. ابزار ماشین داکر (docker machine) که پایین تر درباره آن توضیح داده شده است در این مورد به شما کمک میکند.
به طور کلی هر زمان که با دستور docker run
کانتینری را اجرا میکنید، موتور داکر ابتدا تصویر مورد نظر را از یک registry، مانند Docker Hub، دانلود میکند و سپس یک کانتینر جدید از آن تصویر ایجاد میکند. البته اگر دوباره اقدام به ساخت یک کانتینر از روی همان تصویر کنید دیگر نیازی به دانلود کردن آن نیست و بنابراین دفعات بعدی این کار با سرعت بالاتری انجام میشود.