داکر همان چیزی است که «روی سیستم من کار میکرد!» را از فرهنگ لغت تیمها حذف کرد: اپلیکیشن و همهی وابستگیهایش در یک بستهی قابل حمل. و سرور ابری ساعتی بهترین زمین بازی برای آن است — محیط تمیز، در یک دقیقه، به قیمت یک ساندویچ.
چرا داکر + سرور ابری ساعتی؟
- محیط همیشه تمیز: سرور تازه میسازید، کانتینرها را بالا میآورید، تست میکنید، سرور را حذف میکنید — سیستم اصلیتان همیشه دستنخورده میماند و فقط چند ساعت هزینه دادهاید.
- استقرار تکرارپذیر: همان چیزی که روی سرور تست اجرا شد، بایتبهبایت روی سرور اصلی اجرا میشود.
- چند اپ روی یک سرور: هر اپ در کانتینر خودش، بیآنکه وابستگیهایشان با هم گلاویز شوند.
نصب داکر روی اوبونتو
روش رسمی و همیشه بهروز، اسکریپت نصب خود داکر است:
curl -fsSL https://get.docker.com | sh
systemctl enable --now docker
تست سلامت:
docker run hello-world
اگر پیام خوشآمد دیدید، موتور روشن است. برای آنکه هر بار sudo نزنید، کاربرتان را به گروه docker اضافه کنید (و یکبار خارج/وارد شوید):
usermod -aG docker $USER
اولین کانتینر واقعی: وبسرور
docker run -d --name web -p 8080:80 nginx:alpine
ترجمهی دستور: ایمیج سبک nginx:alpine را بگیر، در پسزمینه اجرا کن (-d)، و پورت ۸۰ کانتینر را روی پورت ۸۰۸۰ سرور باز کن. حالا http://IP:8080 را در مرورگر ببینید. چند دستور روزمره:
docker ps # چه چیزهایی در حال اجراست؟
docker logs -f web # لاگ زنده
docker exec -it web sh # ورود به داخل کانتینر
docker stop web && docker rm web # توقف و حذف
Docker Compose: اپ چندسرویسه با یک فایل
اپ واقعی معمولاً چند قطعه دارد — مثلاً وردپرس + دیتابیس. Compose هر دو را با هم تعریف و مدیریت میکند. فایل compose.yaml:
services:
db:
image: mariadb:11
environment:
MARIADB_ROOT_PASSWORD: strong-pass
MARIADB_DATABASE: wp
volumes:
- db_data:/var/lib/mysql
wordpress:
image: wordpress:latest
ports:
- "80:80"
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_NAME: wp
WORDPRESS_DB_USER: root
WORDPRESS_DB_PASSWORD: strong-pass
depends_on:
- db
volumes:
db_data:
و فقط:
docker compose up -d
یک وردپرس کامل با دیتابیس بالا آمد. docker compose down همه را جمع میکند (دادهها در volume میمانند).
سه نکته که بعداً از خودتان تشکر میکنید
- دادهی مهم فقط در volume. کانتینرها یکبارمصرفاند؛ هرچه باید بماند (دیتابیس، آپلودها) را در volume یا bind-mount نگه دارید و از همانها بکاپ بگیرید.
- تگ نسخه بزنید، نه latest.
mariadb:11قابل پیشبینی است؛latestممکن است فردا چیز دیگری باشد و استقرارتان را بشکند. - پورتها را آگاهانه باز کنید. هر
-pیک درِ عمومی است؛ دیتابیس را هرگز به بیرون map نکنید — سرویسهای داخل یک Compose، همدیگر را با نام میبینند و نیازی به پورت عمومی ندارند. فایروال را هم از چکلیست امنیت یادتان نرود.
گردش کار پیشنهادی با سرور ساعتی
یک سناریوی واقعی که مزهی ترکیب داکر و پرداخت ساعتی را نشان میدهد:
- صبح: سرور ۴ گیگی میسازید (۶۰ ثانیه)؛
docker compose up -d— محیط کامل پروژه بالا میآید؛- تمام روز توسعه و تست؛
- عصر: push به رجیستری/گیت، خروجی از volumeها، حذف سرور؛
- هزینهی کل روز: چند ساعت سرور، نه یک ماه.
قدم بعدی
اگر هنوز سروری برای تمرین ندارید، همین حالا یکی بسازید — با پرداخت ساعتی، کل این آموزش کمتر از قیمت یک قهوه تمام میشود. برای اجرای مستقیم سایت (بدون داکر) هم آموزش Nginx روی اوبونتو را داریم.