کاتالوگ زنده · ۸ آبان ۱۴۰۵، ۱۲:۳۴ (تهران)

همهٔ مقاله‌ها

داکر چیست و چطور روی VPS اوبونتو نصبش کنیم؟

داکر برنامه را با وابستگی‌هایش در یک کانتینر قابل‌حمل اجرا می‌کند. نصب روی اوبونتو، اجرای اولین کانتینر و استفاده از Docker Compose را قدم‌به‌قدم یاد بگیرید.

کانتینرهای داکر روی یک سرور

داکر (Docker) ابزاری است که برنامه را همراه کتابخانه‌ها و تنظیماتش در یک «کانتینر» ایزوله اجرا می‌کند، پس همان برنامه روی هر سرور یکسان کار می‌کند. روی VPS اوبونتو با curl -fsSL https://get.docker.com | sh نصب می‌شود و با docker run یا فایل Docker Compose سرویس‌ها را بالا می‌آورید. کانتینر ماشین مجازی نیست؛ هستهٔ سیستم‌عامل را مشترک استفاده می‌کند و سبک‌تر است.

کانتینر چیست و فرقش با ماشین مجازی چیست؟

ماشین مجازی یک سیستم‌عامل کامل با هستهٔ مخصوص خود است. کانتینر فقط برنامه و وابستگی‌هایش را بسته‌بندی می‌کند و هستهٔ لینوکس میزبان را به اشتراک می‌گذارد؛ به همین دلیل در چند ثانیه بالا می‌آید و حافظهٔ کمتری می‌گیرد. «ایمیج» (image) الگوی فقط‌خواندنی است و «کانتینر» نمونهٔ در حال اجرای آن. اگر VPS برایتان تازه است، سرور مجازی چیست را بخوانید.

چرا روی VPS از داکر استفاده کنیم؟

  • نصب برنامه‌ها بدون به‌هم‌ریختن سیستم: هر سرویس در کانتینر خودش است.
  • بالا آوردن پایگاه داده، Redis یا وردپرس با چند خط.
  • ارتقا و بازگشت ساده: ایمیج جدید را می‌کشید و کانتینر را جایگزین می‌کنید.
  • انتقال راحت به سرور دیگر با همان فایل تنظیمات.

نصب داکر روی اوبونتو

ابتدا با SSH وصل شوید (مطلب SSH چیست) و سیستم را به‌روز کنید. سپس اسکریپت رسمی را اجرا کنید:

apt update && apt upgrade -y
curl -fsSL https://get.docker.com | sh
docker run hello-world

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

اولین کانتینر واقعی: وب‌سرور Nginx

docker run -d --name web -p 80:80 nginx
docker ps

حالا IP سرور را در مرورگر باز کنید تا صفحهٔ Nginx را ببینید. -d کانتینر را در پس‌زمینه اجرا می‌کند و -p 80:80 پورت ۸۰ سرور را به کانتینر وصل می‌کند.

Docker Compose چیست؟

وقتی چند سرویس دارید، همهٔ آن‌ها را در فایل compose.yaml می‌نویسید:

services:
  web:
    image: nginx
    ports:
      - "80:80"
    restart: unless-stopped

و با docker compose up -d اجرا می‌کنید. restart: unless-stopped باعث می‌شود بعد از راه‌اندازی مجدد سرور، کانتینر دوباره بالا بیاید. برای دیدن لاگ از docker compose logs -f استفاده کنید.

نکات امنیتی و منابع

  1. داکر فایروال ufw را دور می‌زند. پورتی که با -p منتشر می‌کنید ممکن است با وجود ufw از بیرون باز باشد. برای سرویس‌های داخلی 127.0.0.1:5432:5432 بنویسید.
  2. ایمیج‌های رسمی و معتبر بردارید و به‌روزشان کنید.
  3. رمزها را در فایل .env یا secret نگه دارید، نه داخل ایمیج.
  4. حجم داده را با volume روی دیسک نگه دارید، وگرنه با حذف کانتینر پاک می‌شود.
  5. مصرف RAM را زیر نظر داشته باشید؛ چند کانتینر می‌توانند حافظه را تمام کنند. اندازهٔ سرور را با انتخاب VPS مناسب تعیین کنید و امنیت پایه را با امنیت سرور لینوکس اعمال کنید.

کانتینر را چطور به‌روز کنیم؟

برای سرویسی که با Compose اجرا می‌شود:

docker compose pull
docker compose up -d

اولی ایمیج جدید را می‌کشد و دومی فقط کانتینرهای تغییرکرده را دوباره می‌سازد. پیش از به‌روزرسانی از داده‌های مهم پشتیبان بگیرید و برچسب نسخه (tag) مشخص بنویسید، نه latest، تا ناگهان نسخهٔ ناسازگار نیاید.

دستورهای روزمره

  • docker ps -a همهٔ کانتینرها را نشان می‌دهد.
  • docker logs -f web لاگ زندهٔ یک کانتینر را می‌دهد.
  • docker exec -it web sh وارد کانتینر می‌شود.
  • docker image prune ایمیج‌های بلااستفاده را پاک می‌کند و فضای دیسک آزاد می‌کند.
  • docker stats مصرف CPU و RAM هر کانتینر را نشان می‌دهد.

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

اگر سرور می‌خواهید

داکر روی هر VPS لینوکسی کار می‌کند. در کلوداسنپ می‌توانید سرور اوبونتو را ساعتی بسازید، داکر را امتحان کنید و با حذف سرور هزینه را متوقف کنید. اسنپ‌شات هم پیش از آزمایش‌های پرخطر در دسترس است (تا وقتی نگهش دارید ساعتی حساب می‌شود). پلن‌ها در قیمت‌ها و شروع کار از ربات است.

جمع‌بندی

داکر برنامه را با وابستگی‌هایش بسته‌بندی می‌کند و روی هر VPS لینوکسی در چند دقیقه نصب می‌شود. به یاد داشته باشید که پورت‌های منتشرشده فایروال را دور می‌زنند، داده را روی volume نگه دارید و ایمیج‌ها را به‌روز کنید.

پرسش‌های پرتکرار

داکر رایگان است؟

موتور داکر برای استفاده روی سرور رایگان و متن‌باز است. برنامهٔ Docker Desktop شرایط مجوز جداگانه دارد.

داکر چقدر RAM می‌خواهد؟

خود داکر کم؛ مصرف اصلی مال کانتینرهاست. ۱ تا ۲ گیگابایت برای چند سرویس کوچک شروع خوبی است.

داکر امن است؟

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

کانتینر را چطور متوقف کنم؟

docker stop web و برای حذف docker rm web.

آیا داده با حذف کانتینر پاک می‌شود؟

اگر volume نگذاشته باشید بله.