در این مطلب میخواهیم یکی از محصولاتی که به صورت تخصصی در حوزه مجازی سازی سیستم عامل فعالیت دارد، را معرفی و بررسی کنیم. نام این محصول داکر (Docker) است که نوعی پلتفرم متن باز به شمار میرود. برای اینکه دقیقا بدانید داکر چیست و چگونه کار میکند تا پایان این مطلب همراه ما باشید.
داکر چیست و چه کاربردی دارد؟
داکر (Docker) یک پلتفرم متن باز است که بر مبنای سیستم عامل لینوکس راهاندازی شده است. در پاسخ به سوال داکر چیست، خیلی ساده میتوان گفت، ابزاری است که میتواند فرایند ایجاد، پیاده سازی و اجرای برنامهها را با استفاده از Container ها بسیار ساده کند.
پاسخ دیگر به سوال داکر چیست، میتواند این باشد که Docker، نوعی ماشین مجازی است و این امکان را برای برنامهها فراهم میکند تا از یک Kernel واحد لینوکس استفاده کرده و از امکاناتی بهره مند شوند که در سیستم عامل میزبان ارائه نشده است. به این ترتیب میتوانند به صورت مستقل از پیش نیازها و امکانات مازاد بهره برداری کنند. این موضوع باعث میشود سرعت و عملکرد برنامه بهبود قابل ملاحظهای پیدا کند و حجم آن نیز کاهش یابد. نگهداری برنامهها در محیطی ایزوله و به صورت مستقل، از اهداف سیستمهای جدید توسعه نرم افزار است. به این ترتیب فعالیت آنها بر روی یکدیگر تاثیری نداشته و کاملا مستقل از هم کار میکنند. یکی از راههای پیاده کردن این تکنولوژی استفاده از ماشین مجازی (Virtual Machine) است که برنامهها را روی یک سخت افزار اما جدا از هم نگهداری میکند. در این حالت component ها با هم تداخل نداشته و رقابت برای استفاده از منابع سخت افزاری به حداقل میرسد. اما کانتینر چیست؟ در مقابل ماشینهای مجازی، کانتینرها( Container ) قرار دارند، آنها میتوانند جایگزین مناسبی برای ماشینهای مجازی باشند. کانتینرها محیطهای اجرایی را جدا کرده و هسته سیستم عامل را به اشتراک میگذارد. کانتینرها نسبت به ماشینهای مجازی از منابع کمتری استفاده میکنند و همچنین خیلی سریع قابلیت اجرا پیدا میکنند. میتوان کانتینرها را به 3 بخش تقسیم کرد که عبارتند از: فناوری مورد استفاده برای ساخت کانتینر فناوری مورد استفاده برای راهاندازی کانتینر فناوری مورد استفاده برای تنظیمات و مدیریت کانتینر هر چند مفهوم container از مدتها قبل در حوزه IT مطرح بوده، اما معرفی و ارائه داکر به عنوان یک پروژه متن باز باعث شد استفاده از container ها دوباره فراگیر شود. کانتینر (Container) این امکان را برای توسعه دهندگان فراهم میکند تا بسته کاملی از برنامههای خود همراه تمامی بخشهای مورد نیاز آن ایجاد کرده و آن را در قالب یک بسته واحد ارسال کنند. با وجود کانتینرها، توسعه دهندگان میتوانند اطمینان داشته باشند که برنامه داکر در هر ماشین، با سیستم عامل لینوکس بدون توجه به تنظیمات سفارشی قابل اجرا و استفاده است. ماشین جدید میتواند تنظیماتی متفاوت با ماشینی که برنامه روی آن طراحی شده، داشته باشد. برای ساخت یک برنامه داکر و همچنین کار با داکر باید از کامپوننتهای مختلف استفاده کنیم. در ادامه این کامپوننتها را معرفی و بررسی میکنیم. هر کانتینر داکر به وسیله یک فایل داکر شروع به کار میکند. در پاسخ به سوال داکر فایل چیست، به سادگی میتوان گفت Dockerfile ها در واقع فایلهای تنظیمات داکر هستند که با استفاده از آنها میتوانیم به داکر بگوییم که یک container را چگونه بالا بیاورد و تنظیم کند. به عنوان مثال، چه سرویسهایی را فعال کند و چطور به آنها اجازه دسترسی دهد. در واقع داکر فایل مشخص میکند که پشت Container ما چه سیستم عاملی قرار بگیرد، همینطور از چه زبان ها، متغیرهای محلی، پورتهای شبکه یا غیره استفاده شود. و مهمتر از همه اینکه مشخص کند Container ما بعد از اینکه واقعا اجرا شد قرار است چه کاری انجام دهد. در جدول زیر کلمات کلیدی مورد استفاده در داکرفایل را توضیح داده ایم. توضیح دستور مورد استفاده FROM MAINTAINER RUN CMD ENTERYPOINT LABEL EXPOSE ENV ADD COPY VOLUME USER WORKDIR زمانی که کار نوشتن داکر فایل تمام شد، یک قابلیت به اسم Docker Build را فراخوانی میکنید که وظیفه دارد یک Image بر اساس محتویات Dockerfile شما بسازد. Docker Image یک فایل قابل حمل و شامل یک سری دستورالعمل است که مشخص میکند Container کدام کامپوننتهای نرم افزاری را اجرا کند و اینکه چطور آن را اجرا کند. ویژگی Docker run در واقع نوعی دستور است که کانتینر را راهاندازی میکند. هر Container یک نمونه یا مثال از Image است و ماهیت کانتینر به صورت موقتی است. با این حال میتوان آنها را متوقف کرد یا مجددا راهاندازی نمود. هر Image به شرط وجود نام منحصر به فرد، میتواند تعداد زیادی کانتینر داشته باشد. قابلیت Docker Hub یک مخزن Saas برای مدیریت و به اشتراک گذاری کانتینرها است. در این قسمت میتوانید تصاویر رسمی داکر که معمولا به صورت متن باز هستند را پیدا کنید. این بخش، هسته اصلی داکر به حساب میآید. در واقع وقتی کسی درباره داکر صحبت میکند، دارد درباره Docker Engine حرف میزند. این ویژگی در دو نسخه Enterprise و Community ارائه میشود. نسخه Community به صورت متن باز و کاملا رایگان است، در حالی که نسخه Enterprise، با ویژگیها و قابلیتهای اضافه، برای هر Node سالانه نزدیک به 1500 دلار هزینه دارد.کانتینر (Container) چیست؟
سازنده (Builder):
موتور (Engine):
تنظیم (Orchestration):
کانتینر داکر چیست؟
Dockerfile
مشخص کردن image مورد استفاده در Container سازنده و توصیحاتContainer اجرا کردن دستور هنگام ساخته شدن Container اجرا کردن یک دستور بعد از ساخته شدن Container اجرا کردن یک دستور بعد از ساخته شدن Container اضافه کردن متادیتا به Container مشخص کردن پورت هایی که Container بعد بالا آمدن اجازه دسترسی به آن را می دهد اضافه کردن متغییرهای محلی به Container اضافه یا کپی یا لینک کردن فایل یا دایرکتوری به Container اضافه یا کپی فایل یا دایرکتوری به Container بدون لینک کردن اضافه کردن یک mount point در ماشین میزبان یا Containerهای دیگر ست کردن یک user یا UID در Container ست کردن دایرکتوری اجرایی در Container Docker image
Docker run
Docker Hub
Docker Engine
مکانیزم عملکرد داکر چیست؟