داکر docker چیست و چه کاربردی دارد؟ داکر یک پلتفرم متنباز است که توسعهدهندگان نرمافزار با استفاده از آن میتوانند برنامهها را در فضاهای جدا از هم به نام کانتینر (Container) بستهبندی و اجرا کنند. در این مقاله با زبان ساده نگاهی کامل به داکر خواهیم داشت و موضوعاتی مانند تاریخچه داکر، مبانی و مفاهیم کلیدی داکر (در بخش آموزش داکر)، روش نصب داکر بر روی ویندوز، لینوکس و مک، مزایا و مقایسهی داکر با ماشینهای مجازی و نکات امنیتی اولیه و چند نکته پیشرفته مرور خواهد شد. بخشهای پایانی مقاله به جمعبندی و سوالات متداول اختصاص دارد تا خواننده دید کلی نسبت به داکر به دست آورد. با ما در آرتیان همراه باشید.

داکر چیست و چرا به وجود آمد؟
داکر (Docker) یک پلتفرم متنباز است که فرایند ساخت، ارسال و اجرای نرمافزارها را از طریق کانتینرها ساده میکند. کانتینرها بستههای سبکی هستند که تمام اجزا و نیازمندیهای یک برنامه را در خود جای میدهند. به این ترتیب برنامه میتواند روی هر سیستمی بدون نگرانی از تنظیمات آن اجرا شود و مشکل کلاسیک «روی سیستم من کار میکند اما روی سیستم دیگر نه» حل میشود. با داکر توسعهدهندگان میتوانند محیط اجرای برنامهها را استاندارد کرده و نرمافزارها را سریعتر و با اطمینان بیشتری توسعه داده و مستقر کنند.
داکر برای اولین بار در سال ۲۰۱۳ توسط سالامون هایکس و تیمش در شرکت dotCloud معرفی و متنباز شد. از آن زمان داکر به سرعت در بین توسعهدهندگان محبوب شد و اکنون ابزار اصلی در بسیاری از پروژههای نرمافزاری است. داکر بر پایه فناوریهای کانتینر متنباز سیستمعامل لینوکس (مانند LXC) ساخته شده و جامعه بزرگی از توسعهدهندگان در بهبود و گسترش آن همکاری میکنند. امروزه داکر به عنوان یکی از تکنولوژیهای کلیدی در زمینه توسعهی سریع (Fast Delivery) و استقرار نرمافزارها شناخته میشود.
آموزش داکر: مفاهیم پایه
در ادامه به معرفی مفاهیم اصلی داکر میپردازیم که در آموزش داکر docker باید با آنها آشنا باشید:
- کانتینر (Container): یک محیط اجرایی ایزوله است که برنامه و تمام وابستگیهای آن را در خود دارد. هر کانتینر به عنوان یک فرآیند مجزا روی سیستم میزبان اجرا میشود؛ اما از هسته سیستمعامل مشترک استفاده میکند. برای مثال، میتوانید یک کانتینر مجزا برای یک وبسرور Apache یا یک پایگاهداده MySQL اجرا کنید تا این سرویسها در محیطی جدا از هم عمل کنند و تداخلی با هم نداشته باشند.
- ایمیج (Image): یک قالب read-only است که شامل تمام فایلها و تنظیمات لازم برای ایجاد کانتینر است. ایمیج را میتوان مانند یک عکس فوری از یک سیستمعامل یا برنامه در نظر گرفت. برای مثال، میتوانید با دستور docker pull ubuntu ایمیج رسمی اوبونتو را از رجیستری داکر دریافت کنید و سپس با آن کانتینر جدیدی ایجاد نمایید.
- داکر فایل (Dockerfile): یک فایل متنی ساده است که دستورالعملهایی برای ساخت یک ایمیج را شامل میشود. در Dockerfile مشخص میکنیم که از چه ایمیجی به عنوان پایه استفاده شود، چه پکیجهایی نصب گردد، چه فایلهایی کپی شود و سایر تنظیمات. با اجرای دستور docker build روی این فایل، یک ایمیج جدید ساخته میشود.
- ولوم (Volume): یک مکانیزم برای ذخیرهسازی پایدار دادهها در داکر است. ولوم به کانتینر اجازه میدهد تا دادهها را خارج از فضای داخلی کانتینر ذخیره کند. به این ترتیب وقتی کانتینر حذف یا دوباره راهاندازی شود، دادههای موجود در ولوم همچنان باقی خواهند ماند. برای نمونه، اگر یک کانتینر دیتابیس MySQL دارید، میتوانید یک ولوم بسازید تا دادههای بانک اطلاعاتیتان پس از راهاندازی مجدد کانتینر حفظ شود.
- شبکه (Network): روش ارتباط کانتینرها را با یکدیگر و با شبکه بیرونی مشخص میکند. داکر به طور پیشفرض یک شبکه داخلی از نوع bridge ایجاد میکند و تمام کانتینرها روی آن قرار میگیرند. هر کانتینر یک آدرس IP اختصاصی خواهد داشت و میتواند با سایر کانتینرها ارتباط برقرار کند. همچنین میتوانید شبکههای سفارشی تعریف کنید و تنظیمات شبکه مانند ارتباط بین سرویسها را سفارشیسازی نمایید.

آموزش نصب داکر
نصب داکر بر روی سیستمهای مختلف کمی متفاوت است. در زیر مراحل کلی نصب داکر روی هر سیستمعامل ارائه شده است.
ویندوز
برای نصب داکر در ویندوز ۱۰ و ۱۱، ابتدا مطمئن شوید که سیستمعامل ۶۴ بیتی و بروزی دارید و مجازیسازی سختافزاری در BIOS/UEFI فعال است (Intel VT-x یا AMD-V). داکر بر روی ویندوز معمولاً به عنوان Docker Desktop عرضه میشود. برای نصب:
- به وبسایت رسمی داکر (یا فروشگاه ویندوز) مراجعه کرده و نسخهی Docker Desktop متناسب با ویندوزتان را دانلود کنید.
- فایل نصبکننده را اجرا کنید و مراحل نصب را دنبال نمایید. معمولاً پس از نصب، نیاز است کامپیوتر را ریاستارت کنید.
- پس از راهاندازی مجدد، برنامهی Docker Desktop را اجرا کنید. داکر در نوار ابزار (system tray) فعال میشود و یک آیکون آن ظاهر میگردد.
- در نهایت برای اطمینان از نصب درست، یک پنجره Command Prompt یا PowerShell را باز کرده و دستور docker run hello-world را اجرا کنید. اگر پیام موفقیتآمیز دریافت کردید، نصب داکر با موفقیت انجام شده است.
لینوکس
بسیاری از توزیعهای لینوکس مانند Ubuntu، Debian یا Fedora، داکر را از طریق مخازن نرمافزاری خود ارائه میکنند. معمولاً روند نصب شامل چند مرحله است:
- ابتدا بستههای سیستمی را بهروز کنید (برای مثال در Ubuntu با اجرای sudo apt update).
- برای نصب داکر میتوانید بستهی docker.io را نصب کنید (در Ubuntu/Debian) یا بستهی docker-ce را از مخزن رسمی داکر استفاده نمایید. به عنوان مثال در اوبونتو میتوانید از دستور sudo apt install docker.io استفاده کنید.
- پس از نصب، سرویس داکر را با دستور sudo systemctl start docker اجرا کنید و با sudo systemctl enable docker آن را فعال کنید تا پس از راهاندازی مجدد سیستم نیز خودکار اجرا شود.
- در پایان میتوانید با اجرای docker –version یا docker run hello-world از نصب صحیح داکر اطمینان حاصل نمایید.
مک
برای نصب داکر در مک، کافی است برنامهی Docker Desktop for Mac را از وبسایت داکر دانلود و نصب کنید. پس از دانلود فایل DMG:
- فایل DMG را باز کرده و آیکون Docker را به پوشه Applications بکشید (Drag & Drop).
- سپس برنامه Docker Desktop را از پوشه Applications اجرا کنید. ممکن است نیاز باشد پسورد حساب کاربری خود را وارد کنید.
- پس از نصب، آیکون داکر در نوار بالایی صفحه نمایش (system tray) ظاهر میشود و داکر آماده به کار است.
- مانند ویندوز، میتوانید در Terminal مک دستور docker run hello-world را اجرا کنید تا از نصب صحیح اطمینان حاصل کنید.

بیشتر بخوانید: اجزای تشکیل دهنده سرور: راهنمای جامع شناخت قطعات سرور فیزیکی
مزایای داکر در پروژههای نرمافزاری
استفاده از داکر در پروژههای نرمافزاری مزایای فراوانی دارد که برخی از مهمترین آنها به شرح زیر است:
- حملپذیری بالا: با داکر محیط اجرای برنامه (اعم از سیستمعامل، کتابخانهها و تنظیمات) در یک کانتینر بستهبندی میشود و میتوان این کانتینرها را به سادگی روی هر سیستمی اجرا کرد. توسعهدهندگان و تیمها میتوانند بدون نگرانی از تفاوت بین محیطهای مختلف کدنویسی کرده و برنامههای خود را تست کنند.
- سرعت و کارایی مثال زدنی: کانتینرها سبکوزن هستند و معمولاً چند ثانیه طول میکشد تا راهاندازی شوند. در مقایسه با ماشینهای مجازی که اجرای یک سیستمعامل کامل نیاز دارد، کانتینرها منابع کمتری مصرف میکنند و سرعت بالایی دارند.
- یکپارچگی و سازگاری محیط: با استفاده از داکر، همه اعضای تیم دقیقا با یک نسخهی یکسان از برنامه و وابستگیها کار میکنند. این یکپارچگی باعث کاهش خطاهای ناشی از تفاوت پیکربندی محیط بین اعضای تیم یا بین مراحل توسعه، تست و تولید میشود.
- مقیاسپذیری و استقرار آسان: با ابزارهایی مانند Docker Compose یا Kubernetes میتوان چندین کانتینر مرتبط (مثل وبسرور، پایگاهداده، کش و …) را همزمان راهاندازی و مدیریت کرد. این قابلیت باعث میشود تا استقرار برنامههای بزرگ و میکروسرویسها سادهتر و مقیاسپذیر شود.
- کم شدن خطاهای انسانی: با خودکارسازی ساخت و تست ایمیجها و استفاده از CI/CD، فرایند توسعه تا تحویل نرمافزار کوتاهتر شده و خطاهای انسانی کاهش مییابد.
مقایسه داکر با ماشین مجازی (Virtual Machine)
در جدول زیر برخی از تفاوتهای کلیدی بین داکر و ماشین مجازی آمده است:
ویژگی | ماشین مجازی | کانتینر (داکر) |
---|---|---|
میزبانی سیستمعامل | هر ماشین مجازی سیستمعامل کامل خود را اجرا میکند و از طریق هایپروایزر روی سختافزار مینشیند. | کانتینرها از هسته سیستمعامل میزبان استفاده میکنند و معمولاً با همان نوع OS اجرا میشوند. |
مصرف منابع | ماشینهای مجازی به دلیل اجرای یک OS کامل، منابع بیشتری مصرف میکنند و راهاندازی آنها سنگینتر است. | کانتینرها سبکوزن هستند و نسبت به VMها منابع کمتری (CPU، حافظه، دیسک) مصرف میکنند. |
زمان راهاندازی | راهاندازی یک VM شامل بوت سیستمعامل است و ممکن است چند دقیقه طول بکشد. | کانتینرها معمولاً در عرض چند ثانیه یا حتی کمتر راهاندازی میشوند. |
ایزولهسازی | VMها جداسازی کاملی دارند؛ هر VM هسته و سیستمعامل مستقل خود را دارد و ایزولهسازی قویتری ایجاد میکند. | کانتینرها جداسازی سبکی از نظر امنیتی ارائه میدهند اما هسته OS را با میزبان به اشتراک میگذارند. |
قابلیت حمل | قالب VM حجیمتر است و جابهجایی آن بین ماشینها سختتر است. | ایمیجهای کانتینر معمولاً کوچکتر هستند و به راحتی بین سیستمهای مختلف منتقل میشوند. |
معماری داکر
معماری داکر بر پایه مدل کلاینت-سرور است. در این مدل، کلاینت داکر (معمولاً رابط خط فرمان docker) دستورات را از کاربر دریافت کرده و به دایمون داکر (Docker Engine) ارسال میکند. دایمون داکر بر روی میزبان اجرا شده و مسئول ساخت و اجرای کانتینرها است. پس از دریافت دستور، دایمون وظیفه میزبانی اجزای مختلف داکر را بر عهده دارد.
شکل: معماری کلی داکر که اجزای اصلی آن را نشان میدهد.
در این معماری:
- کلاینت داکر (Docker Client): رابط کاربری اصلی داکر است که دستورات کاربر را میگیرد. برای مثال با دستور docker run … کانتینر جدیدی درخواست میشود.
- دایمون داکر (Docker Daemon): هسته داکر است که دستورات دریافتی را اجرا میکند و مدیریت منابع داکر را بر عهده دارد. دایمون کانتینر جدید ایجاد میکند، ایمیجها را میسازد و شبکهها و ولومها را مدیریت میکند.
- ایمیجها: قالبهای خواندنی هستند که شامل همه چیز برای ساخت یک کانتینر میشوند. ایمیجها میتوانند از رجیستریهای عمومی (مانند Docker Hub) یا خصوصی بارگیری یا ارسال شوند.
- کانتینرها: نمونههای در حال اجرای یک ایمیج هستند. هر کانتینر یک پردازش ایزوله شده درون میزبان به شمار میآید که برنامه یا سرویس موردنظر را اجرا میکند.
- رجیستری (Registry): مکانی است برای ذخیره و به اشتراکگذاری ایمیجها. Docker Hub یکی از معروفترین رجیستریها است، ولی میتوانید رجیستری خصوصی هم راهاندازی کنید.

نکات امنیتی داکر برای کاربران تازهکار
استفاده از داکر نیازمند رعایت نکات امنیتی اولیه است. چند توصیه مهم برای ایمن نگهداشتن کانتینرهای داکر عبارتند از:
- استفاده از ایمیجهای معتبر: از رجیستریهای رسمی و شناختهشده (مانند Docker Hub) استفاده کنید و از اجرای ایمیجهای ناشناس خودداری نمایید. قبل از اجرای یک ایمیج، منبع آن را بررسی کنید.
- حداقل سطح دسترسی: کانتینرها را با حداقل سطح دسترسی اجرا کنید. بهتر است از گزینهٔ –user یا پارامترهای امنیتی داکر برای اجرای برنامه داخل کانتینر با کاربر غیر ریشه استفاده کنید.
- پیکربندی ولومها: دسترسی ولومها را طوری تنظیم کنید که فقط به پوشههای ضروری دسترسی داشته باشند و از در اختیار گذاشتن دادههای حساس میزبان جلوگیری شود.
- محدودیت منابع: برای کانتینرها محدودیت حافظه و CPU تعیین کنید تا در صورت اختلال در یک کانتینر، سایر قسمتهای سیستم دچار مشکل نشوند.
- بهروزرسانی منظم: داکر و ایمیجها را بهروز نگه دارید. از ابزارهای اسکن امنیتی مانند docker scan برای بررسی آسیبپذیریها استفاده کنید و نسخههای جدید Docker Desktop یا Docker Engine را نصب نمایید.
نکات مهم برای استفاده از داکر در پروژههای تیمی
در پروژههای تیمی میتوانید از قابلیتهای پیشرفته داکر برای هماهنگی بهتر و بهبود فرآیند توسعه استفاده کنید:
- Docker Compose و Kubernetes: با استفاده از Docker Compose یا ابزارهای اورکستراسیون مانند Kubernetes میتوانید چندین کانتینر مرتبط (مثل وبسرور، پایگاهداده، کش و …) را به صورت همزمان مدیریت کنید.
- رجیستری خصوصی: ایمیجهای پروژه را در یک رجیستری خصوصی (Private Registry) ذخیره کنید تا تیم بهصورت مشترک به آنها دسترسی داشته باشد و امنیت بیشتری فراهم شود.
- مدیریت نسخه (Version Tagging): Dockerfile را در مخزن کد پروژه نگهداری و فرآیند ساخت ایمیج را در سیستمهای CI/CD خودکار کنید. از تگهای نسخه در ایمیجها استفاده کنید تا انتشارها قابل کنترل و بازگشتپذیر باشد.
- مستندسازی کانفیگها: مستندسازی Dockerfile و تنظیمات داکر باعث میشود سایر اعضای تیم بتوانند به راحتی از کانتینرها استفاده و توسعه دهند.

بیشتر بخوانید: بهترین شرکتهای سازنده سرور در دنیا
اشتباهات رایج در کار با داکر و نحوه جلوگیری از آنها
برخی اشتباهات متداول که ممکن است در استفاده از داکر رخ دهد و راههای جلوگیری از آنها عبارتند از:
- ساخت ایمیج حجیم: اگر در Dockerfile فایلهای غیرضروری را کپی کنید یا از دستورات متعدد RUN استفاده کنید، حجم ایمیج افزایش پیدا میکند. برای جلوگیری، از فایل dockerignore استفاده کرده و دستورات را ترکیب کنید.
- اجرای چند سرویس در یک کانتینر: بهتر است هر کانتینر وظیفه یک سرویس را بر عهده داشته باشد. اشتراک چند سرویس در یک کانتینر مدیریت را دشوار میکند.
- عدم پاکسازی منابع: فراموش کردن حذف کانتینرها، ایمیجها و ولومهای بلااستفاده باعث اشغال فضای دیسک میشود. پس از اتمام کار، از دستوراتی مانند docker system prune برای پاکسازی استفاده کنید.
- استفاده از تگ latest به طور پیشفرض: اگر همیشه از تگ :latest استفاده کنید، ممکن است پس از بروزرسانیها نسخه متفاوتی از برنامه اجرا شود. بهتر است از تگهای نسخه مشخص (مثلاً :1.0 یا :stable) استفاده کنید.
جمعبندی
داکر به عنوان یکی از فناوریهای کلیدی در حوزه توسعه و استقرار نرمافزار شناخته میشود. در این مقاله با مفاهیم پایه داکر از جمله کانتینر، ایمیج، Dockerfile، Volume و Network آشنا شدیم و دیدیم چگونه داکر مشکل ناسازگاری محیطهای مختلف را برطرف میکند. همچنین روشهای نصب داکر در سیستمهای ویندوز، لینوکس و مک و مزایای استفاده از داکر بررسی شد.
در ادامه به مقایسه داکر با ماشین مجازی (Virtual Machine) پرداختیم و معماری داکر را بررسی کردیم. در انتها نیز از نکات مهم امنیتی برای کاربران تازه کار و نحوه استفاده بهتر از داکر در پروژههای تیمی و همچنین اشتباهات رایج در کار با داکر نوشتیم.
با یادگیری داکر میتوانید پروژههای خود را قابل حملتر کرده و فرایند توسعه تا استقرار را شتاب دهید. داکر امکان اجرا و توسعهی سریعتر برنامهها را فراهم میکند و یادگیری آن امری حیاتی برای توسعهدهندگان محسوب میشود.
منابع:
- docs.docker.com (سایت رسمی داکر)
- hub.docker.com (دریافت ایمیجهای رسمی)
- digitalocean.com (آموزش مفاهیم داکر)
- eraser.io
سوالات متداول
داکر یک پلتفرم کانتینریسازی متنباز است که برنامهها را در محیطهای ایزوله به نام کانتینر اجرا میکند. با داکر میتوان برنامه و تمام وابستگیهای آن را یکجا بستهبندی کرد و روی هر سیستمی بدون نگرانی از تفاوتهای محیطی اجرا نمود.
در ماشین مجازی هر بار یک سیستمعامل کامل مجازیسازی میشود، ولی داکر تنها برنامه و نیازمندیهای آن را در کانتینر اجرا میکند. به همین دلیل کانتینرها سبکتر هستند، با سرعت بیشتری راهاندازی میشوند و منابع کمتری مصرف میکنند.
ایمیج (Image) قالبی read-only است که شامل همه چیز برای ساخت یک کانتینر میشود. کانتینر (Container) نمونهی در حال اجرای یک ایمیج است. میتوان گفت ایمیج مثل شابلون یا عکس است و کانتینر اجرای واقعی آن شابلون است.
برای نصب داکر در ویندوز، لینوکس یا مک باید بسته رسمی Docker Desktop یا Docker Engine را از وبسایت داکر دریافت و نصب کنید. در ویندوز معمولاً Docker Desktop مورد نیاز است و قبل از نصب باید مجازیسازی سختافزاری فعال باشد. در لینوکس میتوانید بستهای مانند docker.io یا docker-ce را از مخازن نصب کنید و در مک نیز از Docker Desktop استفاده میشود
ولومها برای ذخیرهسازی پایدار دادهها به کار میروند. با استفاده از ولوم، دادههای مهم خارج از فضای موقت کانتینر نگهداری میشوند و در صورت حذف یا راهاندازی مجدد کانتینر، این دادهها همچنان حفظ میشوند.