داکر چیست؟ آشنایی با Docker، کانتینر و ایمیج به زبان ساده
داکر (Docker) نرمافزاری متنباز است که هر برنامه را همراه با همهی چیزهایی که برای اجرا لازم دارد (نسخهی مشخص زبان برنامهنویسی، کتابخانهها و تنظیمات) در یک بستهی آماده و جدا از بقیهی سیستم به نام کانتینر اجرا میکند. به همین دلیل، برنامه روی هر سیستمی که داکر داشته باشد، از لپتاپ شما تا سرور مجازی، دقیقاً یکسان کار میکند.
داکر به زبان خیلی ساده
نرمافزارهای «پرتابل» (Portable) ویندوز را یادتان هست؟ برنامههایی که بدون نصب، از یک پوشه یا فلش اجرا میشدند و چیزی در سیستم جا نمیگذاشتند. کانتینر داکر شبیه همین است، با دو تفاوت مهم: هر کانتینر در محیطی کاملاً جدا اجرا میشود و با برنامههای دیگر تداخل ندارد، و برای اجرای برنامهها روی سرور ساخته شده است.
اسم داکر هم از همین ایده آمده: Docker یعنی «کارگر بارانداز». همانطور که کانتینرهای استاندارد کشتی هر باری را بدون توجه به محتوایش به یک شکل جابهجا میکنند، کانتینرهای داکر هم هر برنامهای را به یک شکل استاندارد اجرا میکنند. لوگوی نهنگی که روی پشتش کانتینر حمل میکند هم به همین اشاره دارد.
برای اینکه تفاوت را حس کنید، راهاندازی یک سایت وردپرسی روی سرور را در نظر بگیرید:
- بدون داکر: نصب وبسرور، نصب PHP با نسخهی درست، نصب و تنظیم MySQL، و امیدواری به اینکه با برنامههای دیگر سرور تداخل نکند.
- با داکر: اجرای دو کانتینر آماده (وردپرس و MySQL) با چند دستور؛ و اگر دیگر نخواستید، حذف آنها بدون هیچ اثری روی سرور.
پشت صحنه، داکر با قابلیتهایی از هستهی لینوکس (Namespace و cgroups) هر کانتینر را از بقیه جدا میکند و سهم آن از CPU و رم را کنترل میکند. چون برخلاف ماشین مجازی یک سیستمعامل کامل جداگانه بالا نمیآورد، بسیار سبک است و در چند ثانیه اجرا میشود.
داکر در سال ۲۰۱۳ توسط Solomon Hykes در شرکت dotCloud ساخته شد و امروز استاندارد اصلی اجرای نرمافزار روی سرورها است.
داکر چه مشکلی را حل میکند؟
حتماً این جمله را شنیدهاید: «روی سیستم من که کار میکرد!». برنامهای که روی یک سیستم سالم اجرا میشود، روی سرور به خطا میخورد؛ چون نسخهی PHP، پایتون یا یک کتابخانه فرق دارد.
داکر این مشکل را از ریشه حل میکند: به جای اینکه پیشنیازها را روی هر سیستم جداگانه نصب کنید، برنامه و همهی پیشنیازهایش یک بستهی آماده میشوند که همهجا یکسان اجرا میشود.
مفاهیم اصلی داکر به زبان ساده
- ایمیج (Image): قالب آماده و فقطخواندنی یک برنامه؛ مثل فایل نصبی. مثلاً ایمیج n8n یا ایمیج MySQL.
- کانتینر (Container): نسخهی در حال اجرای یک ایمیج. از یک ایمیج میتوانید چند کانتینر جدا از هم بسازید.
- داکر فایل (Dockerfile): یک فایل متنی که دستور ساخت ایمیج در آن نوشته میشود؛ مثل دستور پخت.
- داکر هاب (Docker Hub): بزرگترین مخزن عمومی ایمیجها. وقتی ایمیجی را اجرا میکنید، داکر آن را از اینجا دانلود میکند.
- والیوم (Volume): فضای ذخیرهسازی ماندگار. دادههای داخل کانتینر با حذف آن پاک میشوند، ولی دادههای داخل Volume میمانند.
- داکر کامپوز (Docker Compose): ابزاری برای اجرای چند کانتینر با هم (مثلاً برنامه + دیتابیس) با یک فایل تنظیمات و یک دستور.
داکر در عمل: یک دستور، یک برنامهی آماده
برای اینکه ملموس شود، این دستور n8n را با همهی پیشنیازهایش دانلود و اجرا میکند. نه Node.js لازم است، نه نصب جداگانهی هیچ چیز دیگری:
docker run -d --name n8n -p 5678:5678 -v n8n_data:/home/node/.n8n docker.n8n.io/n8nio/n8ndocker run: یک کانتینر از ایمیج میسازد و اجرا میکند.-p 5678:5678: پورت برنامه را روی سیستم شما باز میکند.-v n8n_data:...: دادهها را در یک Volume ماندگار نگه میدارد.
اگر بخواهید برنامه را حذف کنید، کانتینر را پاک میکنید و سیستمتان دستنخورده میماند؛ هیچ فایل یا پکیجی پراکنده باقی نمیماند.
تفاوت داکر با ماشین مجازی
هر دو برنامهها را جدا از هم اجرا میکنند، ولی به دو روش کاملاً متفاوت:
| ماشین مجازی (مثل سرور مجازی) | کانتینر داکر | |
|---|---|---|
| چه چیزی را مجازی میکند؟ | کل سختافزار؛ هر ماشین سیستمعامل کامل خودش را دارد | فقط محیط برنامه؛ همهی کانتینرها از هستهی سیستمعامل میزبان استفاده میکنند |
| حجم | چند گیگابایت | معمولاً چند ده تا چند صد مگابایت |
| زمان روشن شدن | چند ده ثانیه تا چند دقیقه | چند ثانیه |
| میزان جداسازی | کامل؛ مناسب برای جداسازی مشتریها از هم | کمتر؛ مناسب برای جداسازی برنامهها روی یک سرور |
| سیستمعامل | هر سیستمعاملی (لینوکس، ویندوز، میکروتیک و…) | همان خانوادهی سیستمعامل میزبان (معمولاً لینوکس) |
این دو رقیب هم نیستند، مکمل هم هستند. در عمل، داکر را داخل یک ماشین مجازی اجرا میکنید: سرور مجازی منابع اختصاصی (CPU، رم و آیپی) و جداسازی کامل را فراهم میکند، و داکر چند برنامه را روی همان سرور مرتب، سبک و جدا از هم اجرا میکند. هر سرور مجازی تککلود هم یک ماشین مجازی KVM است که میتوانید داکر را رویش نصب کنید.
تفاوت داکر با کوبرنتیز
داکر کانتینرها را روی یک سرور اجرا میکند. کوبرنتیز (Kubernetes) کانتینرها را روی دهها یا صدها سرور مدیریت میکند؛ مثلاً اگر یک سرور از کار افتاد، کانتینرهایش را خودکار روی سرور دیگری بالا میآورد. برای بیشتر کسبوکارها و پروژهها، داکر و داکر کامپوز کاملاً کافی است.
داکر چه کاربردهایی دارد؟
- اجرای برنامههای آماده روی سرور: n8n، وردپرس، دیتابیسها، Matomo، رباتها و صدها برنامهی دیگر با یک دستور.
- چند برنامه روی یک سرور بدون تداخل: مثلاً دو برنامه که به دو نسخهی متفاوت PHP نیاز دارند.
- محیط توسعهی یکسان: همهی اعضای تیم برنامه را در محیطی کاملاً یکسان اجرا میکنند.
- انتقال آسان: جابهجایی برنامه به سرور جدید با چند دستور.
داکر در ایران
Docker Hub دسترسی از آیپیهای ایران را محدود کرده و بسته به اپراتور و زمان، ممکن است هنگام دانلود ایمیجها خطای 403 بدهد. در این صورت باید یک Registry Mirror داخلی در تنظیمات داکر قرار دهید تا ایمیجها از سرور داخلی دانلود شوند. در زمان قطعی اینترنت بینالملل هم فقط ایمیجهایی که از قبل روی سرور یا میرور داخلی هستند در دسترساند.
سؤالات متداول
آیا داکر رایگان است؟
موتور داکر (Docker Engine) که روی سرور لینوکس نصب میشود متنباز و رایگان است. Docker Desktop برای ویندوز و مک هم برای استفادهی شخصی، آموزشی و کسبوکارهای کوچک رایگان است و فقط شرکتهای بزرگ باید اشتراک بخرند.
داکر روی ویندوز هم اجرا میشود؟
بله، با Docker Desktop. روی ویندوز، داکر داخل یک محیط لینوکسی سبک (WSL2) اجرا میشود؛ برای همین برای سرورهای واقعی، لینوکس انتخاب طبیعیتری است.
داکر با چه زبانی نوشته شده است؟
داکر با زبان برنامهنویسی Go نوشته شده است. ولی برای استفاده از داکر نیازی به دانستن Go ندارید؛ هر برنامهای با هر زبانی (پایتون، PHP، Node.js و…) داخل کانتینر اجرا میشود.
داکر در ایران تحریم است؟
Docker Hub دسترسی از آیپیهای ایران را محدود کرده و ممکن است هنگام دانلود ایمیجها خطای 403 بدهد. در این صورت با استفاده از Registry Mirror داخلی این مشکل حل میشود.
داکر جای سرور مجازی را میگیرد؟
خیر. داکر روی یک سیستمعامل اجرا میشود؛ معمولاً همان سرور مجازی شما. سرور مجازی زیرساخت را فراهم میکند و داکر برنامهها را روی آن مرتب و جدا از هم اجرا میکند.
قدم بعدی: داکر را نصب کنید
بسته به نیازتان، قدم بعدی یکی از اینهاست:
- نصب روی کامپیوتر خودتان برای یادگیری: آموزش نصب داکر روی ویندوز
- نصب روی سرور مجازی لینوکس: آموزش نصب داکر روی اوبونتو
- دیدن داکر در عمل روی سرور: آموزش نصب n8n روی سرور مجازی با Docker

