چرا داکر روی 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 پایدار و پرسرعت برای اجرای داکر هستید، سرویسهای سرور مجازی سرورنت میتوانند انتخاب مناسبی باشند. حالا وقت آن است که دست به کار شوید و اولین کانتینر خود را اجرا کنید!