نصب مستقیم یا داکر؟
مقایسه نصب مستقیم سرویسها روی سرور با اجرای آنها داخل داکر؛ مصرف منابع، بهروزرسانی، جداسازی و اینکه هرکدام کجا انتخاب بهتری است.
قیمتها، شروع از تهران
هزینه بهصورت روزانه از کیف پول شما کسر میشود. هر زمان سرور را حذف کنید، کسر هزینه متوقف میشود. ارقام زیر مربوط به ارزانترین لوکیشن است؛ قیمت در سایر لوکیشنها متفاوت است.
| پردازنده | حافظه | دیسک NVMe | هزینه روزانه | تقریباً ماهانه | |
|---|---|---|---|---|---|
| ۱ هسته | ۱ گیگابایت | ۳۰ گیگابایت | ۲۸,۰۰۰ تومان | ۸۴۰,۰۰۰ تومان | ساخت سرور |
| ۲ هسته | ۲ گیگابایت | ۵۰ گیگابایت | ۴۴,۰۰۰ تومان | ۱,۳۲۰,۰۰۰ تومان | ساخت سرور |
| ۲ هسته | ۴ گیگابایت | ۸۰ گیگابایت | ۶۲,۰۰۰ تومان | ۱,۸۶۰,۰۰۰ تومان | ساخت سرور |
| ۴ هسته | ۸ گیگابایت | ۱۶۰ گیگابایت | ۱۱۴,۰۰۰ تومان | ۳,۴۲۰,۰۰۰ تومان | ساخت سرور |
قیمتها بدون احتساب مالیات بر ارزش افزوده است و در صورتحساب نهایی اضافه میشود. رقم ماهانه تقریبی و بر پایه ۳۰ روز محاسبه شده است. منابع دلخواه خود را میتوانید در صفحه ساخت سرور دقیقتر تنظیم کنید.
وقتی سرور تازهای میگیرید و میخواهید چیزی رویش بالا بیاورید، دو راه پیش رویتان است: بسته را مستقیم روی سیستمعامل نصب کنید، یا آن را داخل یک کانتینر داکر اجرا کنید.
پاسخ کوتاه: اگر بیش از یکی دو سرویس دارید یا احتمال میدهید روزی سرور را عوض کنید، داکر؛ اگر فقط یک سرویس ساده دارید و با آن آشنا هستید، نصب مستقیم.
این صفحه توضیح میدهد این مرز کجاست و چه چیزی را با کدام انتخاب به دست میآورید یا از دست میدهید.
تفاوتها در یک نگاه
| معیار | نصب مستقیم | داکر |
|---|---|---|
| پیچیدگی شروع | کمتر | یک لایه بیشتر |
| نصب چند سرویس کنار هم | تداخل وابستگی محتمل | هرکدام جدا |
| اجرای دو نسخه از یک نرمافزار | دشوار | ساده |
| بهروزرسانی | بستهبهبسته | تعویض ایمیج |
| بازگشت به نسخه قبل | دشوار | تعویض برچسب ایمیج |
| انتقال به سرور دیگر | راهاندازی از نو | همان فایلها، سرور تازه |
| سربار حافظه و پردازنده | ندارد | ناچیز |
| مصرف دیسک | کمتر | بیشتر، بابت ایمیجها |
| اثر خرابی یک سرویس بر بقیه | ممکن است | محدود به همان کانتینر |
نصب مستقیم را وقتی انتخاب کنید که…
فقط یک سرویس دارید و میشناسیدش. یک وبسرور و یک سایت وردپرسی روی یک سرور، با نصب مستقیم کاملاً قابل مدیریت است و یک لایه کمتر یعنی یک چیز کمتر برای یادگیری و اشکالزدایی.
سرویس عمیقاً با سیستم درگیر است. چیزهایی که مستقیم با شبکه، فایروال یا سختافزار کار میکنند، داخل کانتینر پیچیدهتر میشوند.
منابع سرور خیلی محدود است. روی سروری با ۱ گیگابایت رم، حذف هر لایه اضافه ارزش دارد — هرچند سربار خود داکر ناچیز است، ایمیجها فضای دیسک میگیرند.
تیم شما با داکر آشنا نیست و قرار هم نیست بشود. ابزاری که نیمهبلد استفاده شود، از ابزاری که اصلاً استفاده نشود دردسر بیشتری دارد.
مسیر معمول نصب مستقیم یک پشته وب در آموزش نصب وردپرس روی اوبونتو و آموزش نصب PostgreSQL آمده است.
داکر را وقتی انتخاب کنید که…
چند سرویس روی یک سرور اجرا میکنید. این قویترین دلیل است. وقتی سه سرویس مختلف روی یک سیستم نصب شوند، دیر یا زود سر نسخه یک کتابخانه مشترک به هم میخورند. در کانتینر، هر سرویس وابستگیهای خودش را با خودش میآورد.
میخواهید بتوانید به عقب برگردید. بهروزرسانی یک سرویس داکری یعنی عوض کردن برچسب ایمیج؛ اگر نسخه تازه مشکل داشت، برچسب قبلی را برمیگردانید. با نصب مستقیم، برگرداندن یک ارتقا معمولاً کار سادهای نیست.
احتمال میدهید سرور را عوض کنید. فایل compose و پوشه دادهها را به سرور
تازه منتقل میکنید و همان سرویس بالا میآید. این تفاوت هنگام مهاجرت یا تغییر
لوکیشن خیلی خودش را نشان میدهد.
میخواهید محیط تست و پروداکشن یکسان باشند. همان ایمیج، همان رفتار.
نقطه شروع: آموزش نصب داکر روی اوبونتو و راهنمای انتخاب منابع در سرور مجازی برای داکر.
باور رایج اشتباه: «داکر مثل ماشین مجازی است و منابع زیادی میخورد.» کانتینر هسته سیستمعامل را با میزبان به اشتراک میگذارد و ماشین مجازی جداگانهای بالا نمیآورد. سربار پردازنده و حافظهاش ناچیز است؛ چیزی که واقعاً مصرف میشود فضای دیسک است، بابت نگهداری ایمیجها.
نقطهای که تصمیم عوض میشود
اگر بخواهیم یک مرز عملی بگذاریم: از سرویس سوم به بعد، داکر تقریباً همیشه انتخاب بهتری است.
با یک سرویس، لایه اضافه ارزشی اضافه نمیکند. با دو سرویس، سلیقهای است. از سه سرویس به بعد، مدیریت وابستگیها و پورتها و بهروزرسانیها روی سیستم میزبان به جایی میرسد که هزینهاش از هزینه یادگیری داکر بیشتر میشود.
الگوی خیلی رایج برای رسیدن به این نقطه، میزبانی چند سایت روی یک سرور است: یک وبسرور جلویی که ترافیک را بین کانتینرها پخش میکند و گواهی SSL را هم خودکار میگیرد. مسیر کامل در آموزش Nginx Proxy Manager و میزبانی چند دامنه روی یک سرور.
دیتابیس داخل داکر: با یک شرط
این پرتکرارترین نگرانی است و پاسخش ساده است: بله، به شرطی که داده را روی والیوم نگه دارید، نه داخل کانتینر. کانتینر باید دورانداختنی باشد؛ داده نباید.
نکته دوم که بیشتر جا میافتد: بکآپ دیتابیس داکری را با کپی کردن پوشه والیوم نگیرید. از ابزار خروجی خود دیتابیس استفاده کنید:
docker compose exec -T db pg_dump -U postgres -Fc mydb > mydb.dump
docker compose exec -T db mysqldump --single-transaction -u root -p mydb > mydb.sql
تفاوت اسنپشات، بکآپ و اینکه هرکدام از چه چیزی محافظت میکند در اسنپشات یا بکآپ باز شده است.
انتخاب منابع
داکر منابع مورد نیاز را کم یا زیاد نمیکند؛ آنچه تعیینکننده است سرویسهایی است که اجرا میکنید:
| کاربرد | پردازنده | حافظه | دیسک |
|---|---|---|---|
| یک سرویس سبک | ۱ هسته | ۱ تا ۲ گیگابایت | ۳۰ گیگابایت |
| دو تا سه سرویس سبک | ۲ هسته | ۴ گیگابایت | ۵۰ گیگابایت |
| چند سرویس بههمراه دیتابیس | ۲ هسته | ۴ تا ۸ گیگابایت | ۸۰ گیگابایت |
| محیط استقرار با پنل و چند اپلیکیشن | ۴ هسته | ۸ گیگابایت | ۱۰۰ گیگابایت |
دیسک را دستودلبازتر از چیزی که فکر میکنید بردارید. ایمیجهای بلااستفاده و لایههای قدیمی بهسرعت جمع میشوند و رایجترین علت پر شدن ناگهانی دیسک روی سرورهای داکری همین است.
نگهداری
| کار | دستور | چه زمانی |
|---|---|---|
| بهروزرسانی سیستم میزبان | apt update && apt upgrade |
هفتگی |
| بهروزرسانی ایمیجها | docker compose pull && docker compose up -d |
ماهانه |
| پاکسازی ایمیجهای بلااستفاده | docker system prune -a |
ماهانه |
| بررسی فضای دیسک | df -h |
ماهانه |
| گرفتن اسنپشات | از کنترل پنل ابر سپهر | پیش از هر تغییر بزرگ |
سطر سوم را در تقویم بگذارید. docker system prune -a ایمیجهایی را که هیچ
کانتینری استفاده نمیکند پاک میکند و معمولاً چند گیگابایت آزاد میکند.
جمعبندی
انتخاب بین نصب مستقیم یا داکر را با شمردن سرویسها شروع کنید.
اگر یک سرویس ساده دارید و آن را میشناسید، نصب مستقیم یک لایه کمتر است و همین ارزش دارد. از سه سرویس به بعد، یا وقتی میخواهید بتوانید بهراحتی به عقب برگردید یا سرور را عوض کنید، داکر معامله بهتری است — کمی پیچیدگی اولیه در ازای بهروزرسانی، بازگردانی و انتقال سادهتر.
در هر دو حالت، داده را جدا از برنامه نگه دارید و بکآپ دیتابیس را با ابزار خود دیتابیس بگیرید. این دو عادت مستقل از روش استقرار، بیشترین دردسر را از شما کم میکنند.
سوالهای پرتکرار
نصب مستقیم یا داکر؟ کدام برای سرور بهتر است؟ +
اگر بیش از یکی دو سرویس اجرا میکنید یا میخواهید بعداً به سرور دیگری منتقل شوید، داکر. اگر فقط یک سرویس ساده دارید و آن را خوب میشناسید، نصب مستقیم کملایهتر و سادهتر است.
داکر چقدر منابع اضافه مصرف میکند؟ +
کمتر از آنچه تصور میشود. کانتینر ماشین مجازی نیست و هسته را با میزبان به اشتراک میگذارد؛ سربار پردازنده و حافظهاش ناچیز است. مصرف اصلی روی دیسک است، بابت ایمیجها.
آیا داکر برای دیتابیس هم مناسب است؟ +
بله، به شرطی که داده را روی والیوم نگه دارید نه داخل کانتینر. نکته مهم این است که بکآپ را با ابزار خروجی خود دیتابیس بگیرید، نه با کپی کردن فایلها.
با داکر مدیریت سرور سختتر میشود؟ +
در ابتدا کمی، چون یک لایه و چند مفهوم تازه اضافه میشود. در عوض بهروزرسانی، بازگردانی و انتقال سرویسها سادهتر میشود. برای بیش از دو سرویس، این معامله معمولاً به نفع داکر است.
چقدر رم برای اجرای چند سرویس داکری لازم است؟ +
برای دو تا سه سرویس سبک معمولاً ۴ گیگابایت کافی است. اگر دیتابیس هم داخل داکر اجرا میکنید، از ۴ گیگابایت شروع کنید و بر اساس مصرف واقعی بالا ببرید.
میتوانم بعداً از نصب مستقیم به داکر مهاجرت کنم؟ +
بله، ولی معمولاً به معنی راهاندازی دوباره سرویس داخل کانتینر و انتقال داده است. اگر میدانید در آینده به داکر میروید، از همان ابتدا با داکر شروع کنید.
آموزشهای مرتبط
آموزش نصب داکر روی اوبونتو ۲۴.۰۴ از مخزن رسمی
نصب داکر روی اوبونتو از مخزن رسمی؛ Docker Compose، اجرا بدون sudo، فایروال UFW، چرخش لاگ و پاکسازی فضای دیسک روی سرور ابری.
ادامه مطلبنصب Nginx Proxy Manager؛ چند دامنه روی یک سرور با SSL
نصب Nginx Proxy Manager با داکر برای مدیریت چند دامنه روی یک سرور ابری؛ صدور خودکار گواهی SSL رایگان، پشتیبانی WebSocket و دسترسی امن به پنل مدیریت.
ادامه مطلبآموزش نصب PostgreSQL روی اوبونتو
نصب PostgreSQL روی اوبونتو از مخزن رسمی PGDG؛ ساخت کاربر و دیتابیس، دسترسی امن از راه دور با pg_hba.conf، تنظیم فایروال، تیونینگ پایه و بکآپ.
ادامه مطلبمقایسهها دیگر
آخرین بهروزرسانی: ۱۱ مرداد ۱۴۰۵