
داکر به زبان ساده
- 3 دقیقهداکر چیست؟
داکر (انگلیسی: Docker) پروژهٔ متنبازی است که دیپلویمنت نرمافزارهای کاربردی را درون کانتینر نرمافزاری به وسیلهٔ فراهم کردن لایهٔ انتزاعی اضافهای فراهم میکند.
اگر تابه حال از داکر استفاده نکردید ، جمله بالا هیچ کمکی به شما نمی کنه مثل سایر متن های ترجمه شده که کمکی به هیچ کس نمی کنن. شاید بد نباشه به این عکس یه نگاهی بندازید:
چیزی که در این عکس بیان شده مفهوم کانتینر نرمافزاریه که داره سعی می کنه به ما بگه کانتینر ها:
- روی کرنل سوار میشن
- کاملا مستقل هستند
- اجزای تشکیل دهنده خودشون رو دارند
انصافاً داکر چیست؟
داکر یک نرمافزار کنترل و مدیریت کانتینر هایی که توسط خود داکر ساخته شدن. همونطور که قبل تر گفتم این کانتینر ها مستقل هستن و می تونند باهم link بشن. قبل از اینکه بتونیم کانتینر خودمون رو بسازیم باید یک نسخه اولیه ازش داشته باشیم که اینجا بهشون docker image میگیم.
docker image در نگاه اول
در داکر image ها نسخه های اولیه ای از کانتینر هستند که شما یا باید خودتون بسازینش یا از طریق دستور commit از کانتینر استخراج کنید. داکر هر image رو به یک سری لایه تقسیم می کنه که مجموع اونها سازنده یک image هستند. چیزی شبیه به عکسی که در پایین می بینید:
به طور معمول هر دستوری که در Dockerfile
اجرا میشه یک لایه رو تشکیل میده همینطور هر commit
.
چطور image بسازم
اغلب کسایی که با داکر کار می کنند از یک image پایه برای ساخت image های خودشون استفاده می کنند مثلا ubuntu
،debian
یا phusion/baseimage
ویا image خودشون رو میسازند که کار گزافیه. برای ساخت یک image که apache2
داشته باشه و image پایه هم ubuntu
باشه به همچین Dockerfile
احتیاج داریم:FROM ubuntu:12.04
RUN apt-get update && apt-get install -y apache2 && apt-get clean && rm -rf /var/lib/apt/lists/*
ENV APACHE_RUN_USER www-data
ENV APACHE_RUN_GROUP www-data
ENV APACHE_LOG_DIR /var/log/apache2
EXPOSE 80
CMD ["/usr/sbin/apache2", "-D", "FOREGROUND"]
آخرین خط از Dockerfile
که با دستور CMD
اجرا میشه کارش در حال اجرا نگه داشتن کانتینر هست. دلیلش این اتفاق اینه که داکر هر container رو در قالب یک process اجرا می کنه و این process ها باید در حال اجرا بمونن تا ما بتونیم از کانتینر ها به عنوان سرویس استفاده کنیم.
کانتینر چی شد پس
بعد از اینکه image دلخواهمون رو ساختیم می تونیم با استفاده از دستور docker run
یک دستور رو بر روی image اجرا کنیم که این اتفاق باعث ساخت یک کانتینر از اون image میشه. همین کار رو با image های پایه می تونیم انجام بدیم چرا که داکر کاری نداره image از کجا اومده. به محض اینکه دستور شما اصطلاحا exit کنه اون کانتینر هم ذخیره میشه و کانتینر stop میشه. اگر بخواهید بار بعد دوباره همون کانتینر رو داشته باشید اینبار باید از docker container start
استفاده کنید.
داکر نصب کردم ولی نمی دونم چی میگی
اگر نمی خواهید درگیر اجرای دستور بشید و فقط چند تا image داکر رو می خواهید اجرا کنید می تونید از kitematic استفاده کنید.
کافیه image که می خواهید رو پیدا کنید و کلید create
رو بزنید، باقی کار هارو خود kitematic
انجام میده. وقتی یک container ساختید از منویی که در اختیارتون هست می تونید container رو stop
، start
کنید یا با استفاده از exec
به shell داخلی container وصل بشید.