ورود به پنل ثبت‌ نام

سرور مجازی برای داکر

راهنمای انتخاب سرور مجازی برای داکر. چقدر حافظه و دیسک لازم دارید، چرا لوکیشن مهم است و چطور دیسک را از پر شدن نجات دهید.

قیمت‌ها، شروع از تهران

هزینه به‌صورت روزانه از کیف پول شما کسر می‌شود. هر زمان سرور را حذف کنید، کسر هزینه متوقف می‌شود. ارقام زیر مربوط به ارزان‌ترین لوکیشن است؛ قیمت در سایر لوکیشن‌ها متفاوت است.

پردازنده حافظه دیسک NVMe هزینه روزانه تقریباً ماهانه
۱ هسته ۱ گیگابایت ۳۰ گیگابایت ۲۸,۰۰۰ تومان ۸۴۰,۰۰۰ تومان ساخت سرور
۲ هسته ۲ گیگابایت ۵۰ گیگابایت ۴۴,۰۰۰ تومان ۱,۳۲۰,۰۰۰ تومان ساخت سرور
۲ هسته ۴ گیگابایت ۸۰ گیگابایت ۶۲,۰۰۰ تومان ۱,۸۶۰,۰۰۰ تومان ساخت سرور
۴ هسته ۸ گیگابایت ۱۶۰ گیگابایت ۱۱۴,۰۰۰ تومان ۳,۴۲۰,۰۰۰ تومان ساخت سرور

قیمت‌ها بدون احتساب مالیات بر ارزش افزوده است و در صورتحساب نهایی اضافه می‌شود. رقم ماهانه تقریبی و بر پایه ۳۰ روز محاسبه شده است. منابع دلخواه خود را می‌توانید در صفحه ساخت سرور دقیق‌تر تنظیم کنید.

داکر امروز روش پیش‌فرض اجرای سرویس‌ها روی سرور است. به‌جای نصب مستقیم هر نرم‌افزار با وابستگی‌های خودش، هر سرویس در کانتینر جدا اجرا می‌شود و نصب و حذفش تمیز انجام می‌گیرد. همین باعث شده انتخاب توزیع لینوکس اهمیت کمتری پیدا کند: نسخه بسته داخل توزیع دیگر تعیین‌کننده نیست.

نکته‌ای که باید بدانید: خود داکر تقریباً منابعی مصرف نمی‌کند. آنچه منابع می‌خواهد کانتینرهایی است که اجرا می‌کنید. پس سؤال درست این نیست که «برای داکر چه سروری بگیرم» بلکه «سرویس‌هایی که قرار است اجرا کنم چقدر منابع می‌خواهند».

انتخاب منابع

منابع را بر اساس مجموع نیاز کانتینرها انتخاب کنید:

چه چیزی اجرا می‌کنید پردازنده حافظه دیسک
دو سه سرویس سبک ۱ هسته ۲ گیگابایت ۴۰ گیگابایت
مجموعه سرویس با دیتابیس ۲ هسته ۴ گیگابایت ۸۰ گیگابایت
چند پروژه مستقل ۴ هسته ۸ گیگابایت ۱۰۰ گیگابایت
محیط بیلد و CI ۴ هسته ۸ گیگابایت ۱۵۰ گیگابایت

دیسک را دست‌کم نگیرید. این رایج‌ترین اشتباه در سایزبندی سرور داکری است. هر ایمیج چند صد مگابایت تا چند گیگابایت جا می‌گیرد، و نسخه‌های قدیمی پس از به‌روزرسانی روی دیسک باقی می‌مانند. سروری که با ۳۰ گیگابایت دیسک شروع کرده، پس از چند ماه به‌روزرسانی معمولاً پر می‌شود.

لوکیشن: مهم‌ترین تصمیم

برای کار با داکر، لوکیشن خارج از کشور را انتخاب کنید.

دلیلش ساده است: docker pull بخش ثابتی از کار روزمره با داکر است. هر نصب، هر به‌روزرسانی و هر سرویس تازه یعنی کشیدن ایمیج از Docker Hub. از سرور داخل ایران این کار نیازمند تنظیم اضافه است و اصطکاکی ایجاد می‌کند که هر روز تکرار می‌شود.

استثنا وقتی است که خودِ سرویس باید داخل ایران باشد — مثلاً فروشگاهی که با درگاه پرداخت بانکی کار می‌کند و مخاطبش داخل کشور است. در آن حالت لوکیشن ایران را بگیرید و برای دسترسی به مخازن تنظیمات لازم را انجام دهید.

اشتباهی که سرویس شما را روی اینترنت باز می‌کند

این مهم‌ترین نکته امنیتی این صفحه است. وقتی پورتی را منتشر می‌کنید، تفاوت این دو خط تعیین‌کننده است:

# سرویس روی همه رابط‌های شبکه باز می‌شود — از اینترنت در دسترس است
docker run -p 5432:5432 postgres

# سرویس فقط از خود سرور در دسترس است
docker run -p 127.0.0.1:5432:5432 postgres

فرم اول یعنی دیتابیس شما مستقیم روی اینترنت باز است، حتی اگر فایروال سیستم را تنظیم کرده باشید — چون داکر قوانین خودش را به فایروال اضافه می‌کند و معمولاً بر تنظیمات UFW اولویت پیدا می‌کند. این رفتار غیرمنتظره است و بسیاری را غافلگیر کرده.

قاعده ساده: هر سرویسی که قرار نیست مستقیماً از اینترنت در دسترس باشد را به 127.0.0.1 محدود کنید و دسترسی بیرونی را از طریق یک وب‌سرور جلویی بدهید. دیتابیس‌ها هرگز نباید پورتشان روی اینترنت باز باشد.

داده کانتینر کجا می‌رود؟

این مفهومی است که اگر زود یاد نگیرید، دیر یا زود داده‌ای را از دست می‌دهید.

کانتینر ذاتاً موقتی است. هر چیزی که داخل آن نوشته شود، با حذف کانتینر از بین می‌رود. اگر دیتابیسی را در کانتینر اجرا کنید و داده‌اش را جایی بیرون نگه ندارید، اولین docker compose down که ساختار را بازسازی کند، همه‌چیز را پاک می‌کند.

راه‌حل volume است — فضایی روی دیسک میزبان که به کانتینر وصل می‌شود و مستقل از عمر آن باقی می‌ماند:

docker volume ls          # حجم‌های موجود
docker volume inspect <name>   # مسیر واقعی روی دیسک

نکته‌ای که برای بک‌آپ اهمیت دارد: بک‌آپ گرفتن از فایل docker-compose.yml کافی نیست. آن فایل فقط می‌گوید سرویس چطور ساخته شود، نه اینکه داده‌اش چیست. باید از volumeها هم نسخه بگیرید. صفحه سرور برای بک‌آپ روش درست را توضیح می‌دهد.

Compose یا اجرای دستی؟

برای یک کانتینر، docker run کافی است. از دو کانتینر به بالا، Docker Compose عملاً الزامی می‌شود.

دلیلش این نیست که Compose قابلیت بیشتری دارد؛ این است که پیکربندی را در یک فایل نگه می‌دارد. با docker run باید همه گزینه‌ها — پورت‌ها، volumeها، متغیرهای محیطی — را هر بار به یاد بیاورید و دوباره تایپ کنید. با Compose فایل را می‌نویسید، در Git نگه می‌دارید و بازسازی سرویس یک دستور است.

Compose امروز به‌صورت افزونه رسمی همراه داکر نصب می‌شود و دستورش docker compose است، نه docker-compose قدیمی.

انتشار چند سرویس روی یک سرور

وقتی چند سرویس داکری دارید که هرکدام باید روی دامنه‌ای در دسترس باشند، همه نمی‌توانند پورت ۴۴۳ را بگیرند. راه‌حل یک وب‌سرور جلویی است که بر اساس نام دامنه ترافیک را به کانتینر درست هدایت می‌کند و گواهی SSL را هم خودکار می‌گیرد.

روش عملی آن در آموزش نصب Nginx Proxy Manager و توضیح کامل‌تر در صفحه وب‌سرور جلویی آمده است.

راه‌اندازی

آموزش نصب داکر روی اوبونتو نصب از مخزن رسمی را توضیح می‌دهد. این نکته مهمی است: نسخه‌ای که در مخازن پیش‌فرض توزیع وجود دارد معمولاً قدیمی است و افزونه Compose را هم ندارد.

پیش از نصب داکر، سرور را امن کنید — راهنمای امن‌سازی سرور لینوکس.

نگهداری

کار دستور چه زمانی
پاک‌سازی ایمیج و کانتینر بی‌استفاده docker system prune -a ماهانه
بررسی فضای مصرفی داکر docker system df ماهانه
به‌روزرسانی سرویس‌ها docker compose pull && docker compose up -d ماهانه
بررسی کانتینرهای در حال اجرا docker ps هنگام بررسی مشکل
به‌روزرسانی سیستم‌عامل apt update && apt upgrade هفتگی

پیش از اجرای docker system prune -a بدانید چه می‌کند: هر ایمیجی که در حال حاضر توسط کانتینری استفاده نمی‌شود حذف می‌شود. اگر ایمیجی را نگه داشته‌اید که فعلاً اجرا نیست اما لازمش دارید، باید دوباره بکشیدش.

جمع‌بندی

سرور مجازی برای داکر را بر اساس نیاز کانتینرهایتان انتخاب کنید، نه خود داکر. از ۲ گیگابایت رم برای چند سرویس سبک شروع کنید و دیسک را سخاوتمندانه‌تر از آنچه فکر می‌کنید بگیرید.

لوکیشن خارج از کشور کار روزمره را به‌مراتب روان‌تر می‌کند، و مهم‌ترین کار امنیتی، محدود کردن پورت سرویس‌ها به لوکال‌هاست است.

ساخت سرور ابری برای داکر

سوال‌های پرتکرار

برای داکر چقدر منابع لازم است؟ +

خود داکر تقریباً منابعی مصرف نمی‌کند؛ آنچه منابع می‌خواهد کانتینرهای شماست. برای دو سه سرویس سبک ۲ گیگابایت و برای مجموعه‌ای از سرویس‌ها با دیتابیس ۴ تا ۸ گیگابایت نقطه شروع منطقی است.

کدام لوکیشن برای داکر مناسب است؟ +

لوکیشن خارج از کشور. کشیدن ایمیج از Docker Hub بخش ثابتی از کار با داکر است و از سرور داخل ایران نیازمند تنظیم اضافه می‌شود.

چرا دیسک سرور داکری من مدام پر می‌شود؟ +

ایمیج‌های قدیمی، کانتینرهای متوقف‌شده و حجم‌های بی‌استفاده روی دیسک می‌مانند. دستور docker system prune آن‌ها را پاک می‌کند و معمولاً چند گیگابایت آزاد می‌شود.

داکر روی سرور مجازی امن است؟ +

تا وقتی پورت‌ها را درست تنظیم کنید بله. رایج‌ترین اشتباه، انتشار پورت سرویس روی همه رابط‌های شبکه است به‌جای محدود کردن آن به لوکال‌هاست؛ در آن حالت سرویس شما مستقیم روی اینترنت باز می‌شود.

به Docker Compose نیاز دارم؟ +

برای بیش از یک کانتینر، عملاً بله. Compose پیکربندی را در یک فایل نگه می‌دارد و اجرای مجدد را ساده می‌کند. امروز به‌صورت افزونه رسمی همراه داکر نصب می‌شود.

چند سرویس روی یک سرور داکری اجرا کنم؟ +

محدودیت مشخصی نیست؛ مجموع حافظه مورد نیاز کانتینرها تعیین‌کننده است. برای انتشار چند دامنه روی یک سرور به یک وب‌سرور جلویی نیاز دارید.

آموزش‌های مرتبط

کاربردها دیگر

آخرین به‌روزرسانی: ۰۹ مرداد ۱۴۰۵