داکر (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 استفاده کنید.
نکات امنیتی و منابع
- داکر فایروال ufw را دور میزند. پورتی که با
-pمنتشر میکنید ممکن است با وجود ufw از بیرون باز باشد. برای سرویسهای داخلی127.0.0.1:5432:5432بنویسید. - ایمیجهای رسمی و معتبر بردارید و بهروزشان کنید.
- رمزها را در فایل
.envیا secret نگه دارید، نه داخل ایمیج. - حجم داده را با volume روی دیسک نگه دارید، وگرنه با حذف کانتینر پاک میشود.
- مصرف 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 نگذاشته باشید بله.
