راه‌اندازی داکر روی VPS؛ از نصب تا اجرای اولین کانتینر

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

۶ دقیقه به‌روزرسانی ۴ شهریور ۱۴۰۵

چرا داکر روی VPS انتخاب هوشمندانه‌ای است؟

اگر یک سرور مجازی (VPS) دارید و می‌خواهید برنامه‌های خود را سریع، ایزوله و قابل حمل اجرا کنید، داکر روی VPS بهترین گزینه است. داکر به شما اجازه می‌دهد هر برنامه را به همراه تمام وابستگی‌هایش در یک کانتینر سبک بسته‌بندی کنید. این یعنی دیگر نگران تداخل نسخه‌های کتابخانه‌ها، تنظیمات متغیرهای محیطی یا ناسازگاری بین سرویس‌ها نخواهید بود. در این مقاله، مسیر کامل راه‌اندازی داکر روی VPS را از نصب تا اجرای پروژه‌های چندسرویسه با Docker Compose پیش می‌گیریم.

پیش‌نیازها و آماده‌سازی سرور

قبل از شروع، مطمئن شوید که VPS شما این مشخصات را دارد:

  • سیستم‌عامل اوبونتو ۲۲.۰۴ یا ۲۴.۰۴ (دستورات این مقاله برای این نسخه‌ها تست شده است)
  • حداقل ۱ گیگابایت رم و ۱۰ گیگابایت فضای دیسک (برای پروژه‌های سبک)
  • دسترسی SSH با کاربر دارای sudo

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

sudo apt update && sudo apt upgrade -y

نصب پیش‌نیازهای داکر

چند بسته کمکی لازم است تا apt بتواند از مخازن HTTPS استفاده کند:

sudo apt install -y ca-certificates curl gnupg lsb-release

نصب داکر روی VPS

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

افزودن مخزن رسمی داکر

کلید GPG داکر را اضافه کنید:

sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

سپس مخزن را به لیست منابع اضافه کنید:

echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

نصب موتور داکر و افزونه‌ها

sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

بعد از نصب، سرویس داکر را فعال و اجرا کنید:

sudo systemctl enable docker
sudo systemctl start docker

بررسی نصب و افزودن کاربر به گروه docker

برای اینکه بدون sudo از دستورات داکر استفاده کنید، کاربر خود را به گروه docker اضافه کنید:

sudo usermod -aG docker $USER

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

docker --version

خروجی باید چیزی شبیه Docker version 27.x.x باشد.

اشتباه رایج: اگر بعد از افزودن به گروه docker هنوز خطای permission denied می‌بینید، حتماً یک بار کامل logout و login کنید. گاهی هم نیاز به ری‌استارت سرویس SSH دارید.

اجرای اولین کانتینر روی VPS

حالا که داکر نصب شده، بیایید اولین کانتینر را اجرا کنیم. ساده‌ترین تست، اجرای تصویر hello-world است:

docker run hello-world

اگر پیام موفقیت‌آمیز دیدید، یعنی داکر روی VPS شما به درستی کار می‌کند. حالا یک مثال واقعی‌تر: اجرای یک وب‌سرور Nginx:

docker run -d -p 8080:80 --name my-nginx nginx

این دستور:

  • -d یعنی اجرا در پس‌زمینه
  • -p 8080:80 یعنی پورت ۸۰ کانتینر را به پورت ۸۰۸۰ سرور نگاشت می‌کند
  • --name یک نام برای کانتینر تعیین می‌کند

حالا در مرورگر خود آدرس http://IP_VPS:8080 را باز کنید. باید صفحه پیش‌فرض Nginx را ببینید.

مدیریت کانتینرها

چند دستور پرکاربرد برای مدیریت کانتینرها:

docker ps                    # لیست کانتینرهای در حال اجرا
docker ps -a                 # لیست همه کانتینرها
docker stop my-nginx         # توقف کانتینر
docker start my-nginx        # شروع مجدد کانتینر
docker rm my-nginx           # حذف کانتینر
docker logs my-nginx         # مشاهده لاگ‌ها

مدیریت داده‌ها با ولوم‌ها در داکر

کانتینرها ذاتاً بی‌حالت هستند؛ یعنی هر تغییری در فایل‌سیستم کانتینر با حذف آن از بین می‌رود. برای ذخیره‌سازی داده‌های پایدار (مثل دیتابیس یا فایل‌های آپلودی)، باید از ولوم‌ها استفاده کنید.

ایجاد و استفاده از ولوم

یک ولوم نام‌گذاری‌شده بسازید:

docker volume create my-data

حالا یک کانتینر با این ولوم اجرا کنید:

docker run -d -p 3306:3306 -v my-data:/var/lib/mysql --name mysql-db -e MYSQL_ROOT_PASSWORD=secret mysql:8

در این مثال، داده‌های MySQL در ولوم my-data ذخیره می‌شوند و حتی اگر کانتینر را حذف کنید، داده‌ها باقی می‌مانند.

Bind Mount برای دسترسی مستقیم به فایل‌ها

گاهی می‌خواهید کانتینر به یک پوشه مشخص در سرور دسترسی مستقیم داشته باشد. این کار با bind mount انجام می‌شود:

docker run -d -p 8080:80 -v /home/user/html:/usr/share/nginx/html --name web nginx

حالا هر فایلی که در /home/user/html قرار دهید، بلافاصله در وب‌سرور قابل مشاهده است. این روش برای توسعه محلی عالی است.

اشتباه رایج: فراموش نکنید که مسیر bind mount باید از قبل وجود داشته باشد. اگر پوشه مقصد وجود نداشته باشد، داکر آن را با دسترسی root می‌سازد و ممکن است با خطای permission مواجه شوید.

اجرای چند سرویس با Docker Compose

برای پروژه‌های واقعی، معمولاً به چند سرویس همزمان نیاز دارید؛ مثلاً یک وب‌اپلیکیشن، دیتابیس و کش. Docker Compose این کار را ساده می‌کند. با یک فایل docker-compose.yml می‌توانید همه سرویس‌ها را تعریف و با یک دستور اجرا کنید.

ساخت فایل docker-compose.yml

یک پوشه برای پروژه بسازید و فایل compose را ایجاد کنید:

mkdir ~/myapp && cd ~/myapp
nano docker-compose.yml

محتوای زیر را وارد کنید — یک اپلیکیشن ساده Node.js به همراه Redis:

version: '3.8'

services:
  app:
    image: node:18-alpine
    container_name: myapp
    working_dir: /app
    volumes:
      - ./app:/app
    ports:
      - "3000:3000"
    command: sh -c "npm install && npm start"
    environment:
      - REDIS_HOST=redis
    depends_on:
      - redis

  redis:
    image: redis:7-alpine
    container_name: myapp-redis
    volumes:
      - redis-data:/data

volumes:
  redis-data:

اجرای پروژه با Compose

حالا پوشه app را بسازید و یک فایل ساده package.json و index.js در آن قرار دهید. سپس اجرا کنید:

docker compose up -d

این دستور هر دو سرویس را دانلود و اجرا می‌کند. برای مشاهده وضعیت:

docker compose ps

و برای مشاهده لاگ‌ها:

docker compose logs -f

دستورات پرکاربرد Compose

docker compose down          # توقف و حذف کانتینرها
docker compose down -v       # حذف کانتینرها و ولوم‌ها
docker compose restart       # ری‌استارت همه سرویس‌ها
docker compose build         # ساخت مجدد تصاویر

اشتباه رایج: اگر فایل compose را تغییر دادید، حتماً از docker compose up -d دوباره استفاده کنید تا تغییرات اعمال شود. دستور restart فقط کانتینرها را ری‌استارت می‌کند و تغییرات پیکربندی را اعمال نمی‌کند.

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

برای استفاده حرفه‌ای از داکر روی VPS، چند نکته امنیتی را رعایت کنید:

  • همیشه تصاویر را از منابع رسمی و معتبر دریافت کنید
  • از docker scan برای بررسی آسیب‌پذیری تصاویر استفاده کنید
  • متغیرهای محیطی حساس (مثل رمز دیتابیس) را در فایل .env قرار دهید و آن را از مخزن گیت حذف کنید
  • برای محدود کردن منابع هر کانتینر از فلگ‌های --memory و --cpus استفاده کنید
docker run -d --memory="512m" --cpus="0.5" --name limited nginx

جمع‌بندی

راه‌اندازی داکر روی VPS کار سختی نیست، اما نیاز به دقت در جزئیات دارد. در این مقاله یاد گرفتید که چگونه داکر را نصب کنید، اولین کانتینر را اجرا کنید، داده‌ها را با ولوم‌ها مدیریت کنید و با Docker Compose چند سرویس را همزمان اجرا کنید. این مهارت‌ها پایه‌ای برای استقرار برنامه‌های مدرن روی زیرساخت‌های ابری هستند. اگر به دنبال یک VPS پایدار و پرسرعت برای اجرای داکر هستید، سرویس‌های سرور مجازی سرورنت می‌توانند انتخاب مناسبی باشند. حالا وقت آن است که دست به کار شوید و اولین کانتینر خود را اجرا کنید!

آیا این مطلب برایتان مفید بود؟