معرفی Docker
Docker یک موتور کانتینر است: یک برنامه و وابستگیهایش را در یک ایمیج بستهبندی میکند و سپس بهصورت ایزوله روی هسته میزبان اجرا میکند. توسعهدهندگان از آن برای داشتن محیطی یکسان در توسعه محلی و محیط عملیاتی استفاده میکنند. تیمهای کوچک هم با آن چند سرویس را روی یک ماشین میزبانی میکنند، بدون اینکه وابستگیهایشان با هم تداخل کنند.
هنگام تحویل، سرور مجازی (VPS) لینوکسی شما (Debian 12، Debian 13، Ubuntu 22.04 یا 24.04 و همچنین Ubuntu 20.04 با محدودیتهایی که در ادامه آمده است) شامل Docker Engine است که از مخزن رسمی apt داکر نصب شده است. بستههای docker-ce، docker-ce-cli، containerd.io، docker-buildx-plugin و docker-compose-plugin آمادهاند و سرویسهای docker و containerd هنگام بوت فعال میشوند.
کلید امضای مخزن پیش از نصب با اثر انگشت (fingerprint) بررسی میشود. در پایان اجرای دستورالعمل نصب، یک کانتینر hello-world اجرا میشود تا پاسخگو بودن دیمن تأیید شود. پس از آن سرور در اختیار شماست: بهطور پیشفرض هیچ کاربری به گروه docker اضافه نمیشود و هیچ برنامهای به جای شما مستقر نمیشود.
با Docker چه کارهایی میتوانید انجام دهید
مخزن رسمی apt داکر
بستهها از download.docker.com میآیند و اثر انگشت کلید امضای آنها بررسی میشود. بهروزرسانیها مثل بقیه سیستم از طریق apt انجام میشوند.
Compose و Buildx همراه سرور
افزونه Compose با
docker compose(بدون خط تیره) استفاده میشود و Buildx برای ساخت ایمیجهای شما به کار میرود. از همان اولین اتصال میتوانید یک استک چندسرویسه را مستقر کنید.چرخش لاگها از پیش تنظیمشده
اگر
/etc/docker/daemon.jsonوجود نداشته باشد، دستورالعمل نصب آن را با درایورjson-file، حجم 10 مگابایت برای هر فایل و نگهداری 3 فایل مینویسد. لاگهای کانتینر بیسروصدا دیسک را پر نمیکنند.حذف بستههای متداخل
بستههای غیررسمی مانند
docker.io،podman-docker،containerdیاruncپیش از نصب حذف میشوند. این کار از ترکیب نسخههای ناهماهنگی که باعث از کار افتادن دیمن میشود جلوگیری میکند.کنترل دسترسی معادل روت
هیچ حسابی به گروه
dockerاضافه نمیشود، گروهی که معادل دسترسی روت (root) است. شما تصمیم میگیرید این امتیاز به چه کسی داده شود.لاگ نصب خوانا
هر مرحله در
/var/log/docker-install.logثبت میشود و فایل/var/lib/docker-install.doneتأیید میکند که دستورالعمل نصب تا انتها اجرا شده است.
شروع کار با Docker
از سفارش تا راهاندازی نهایی، در چند دقیقه.
- 1
سفارش VPS با گزینه Docker
یک VPS لینوکسی در پاریس یا فرانکفورت انتخاب کنید، Debian 12، Debian 13، Ubuntu 22.04 یا 24.04 را برگزینید و سپس در تب «Applications» فرم سفارش، Docker را تیک بزنید.
- 2
اتصال و بررسی نصب
پس از تحویل سرور، با دسترسیهایی که دریافت کردهاید از طریق SSH متصل شوید. نصب در اولین بوت اجرا میشود: اگر فایل نشانگر هنوز وجود ندارد، کمی صبر کنید و لاگ را دنبال کنید.
Bashssh USER@SERVER_IP cat /var/lib/docker-install.done tail -n 20 /var/log/docker-install.log - 3
اجرای اولین کانتینر
نسخهها را بررسی کنید و سپس یک وبسرور آزمایشی راهاندازی کنید. پورت فقط روی 127.0.0.1 منتشر میشود، بنابراین در زمان آزمایش در معرض اینترنت قرار نمیگیرد.
Bashdocker --version && docker compose version docker run -d --name web -p 127.0.0.1:8080:80 nginx curl -I http://127.0.0.1:8080 - 4
امنسازی پیش از محیط عملیاتی
یک reverse proxy (Caddy، Traefik یا Nginx) جلوی سرویسهای خود قرار دهید تا YOUR_DOMAIN را روی HTTPS مدیریت کند و فقط پورتهای 80 و 443 را روی اینترنت منتشر کنید. پورتهای دیگر را روی 127.0.0.1 نگه دارید، چون پورتهایی که Docker منتشر میکند از ufw عبور میکنند. در پایان، ولومها و فایلهای compose خود را بکاپ بگیرید.
Bashdocker volume ls docker compose up -d
کاربردهای Docker
میزبانی چند سرویس ایزوله
یک پایگاه داده PostgreSQL، یک برنامه وب و یک ابزار پایش هر کدام در کانتینر خودشان اجرا میشوند و همگی در یک فایل
compose.yamlتعریف شدهاند. میتوانید آنها را جداگانه بهروزرسانی یا ریاستارت کنید.استقرار یک برنامه خودمیزبان
بسیاری از پروژههای متنباز (n8n، Nextcloud، Gitea، Uptime Kuma و...) یک ایمیج Docker و یک نمونه Compose منتشر میکنند. VPS بدون هیچ آمادهسازی قبلی برای پذیرش آنها آماده است.
ساخت و آزمایش ایمیجها
با Buildx ایمیجهای خود را روی یک ماشین راه دور اختصاصی میسازید، بدون اینکه سیستم کاری شما زیر بار برود. این برای یک زنجیره CI سبک یا تستهای یکپارچگی مفید است.
بازتولید محیط عملیاتی در پیشتولید
یک VPS دوم با همان نسخه Docker و همان فایلهای Compose، محیط آزمایشی نزدیک به محیط عملیاتی را با هزینه مدیریتی کمتر در اختیار شما میگذارد.
پرسشهای متداول درباره Docker
دستورالعمل نصب، docker-ce، docker-ce-cli، containerd.io، docker-buildx-plugin و docker-compose-plugin را از مخزن رسمی apt داکر نصب میکند. سرویس docker و سرویس containerd هنگام بوت فعال میشوند. با Compose v2 دستور docker compose است، نه docker-compose.
درباره Docker بیشتر بدانید
فایروال و پورتهای منتشرشده
این رایجترین دام است. وقتی پورتی را با -p 8080:80 منتشر میکنید، Docker قوانین iptables مخصوص خود را مینویسد و ترافیک پیش از قوانین ufw یا firewalld عبور میکند. بنابراین ufw deny 8080 هیچ چیزی را مسدود نمیکند.
دو روش قابلاعتماد وجود دارد: پورت را به اینترفیس محلی متصل کنید (-p 127.0.0.1:8080:80) و سرویس را از طریق یک reverse proxy در دسترس قرار دهید، یا در زنجیره DOCKER-USER فیلتر کنید که Docker پیش از قوانین خودش آن را بررسی میکند. روش اول سادهتر است و در بیشتر موارد کافی است.
گروه docker و sudo
عضویت در گروه docker معادل داشتن دسترسی روت (root) روی ماشین است: یک کانتینر میتواند فایلسیستم میزبان را مانت کند. دستورالعمل نصب هیچکس را به این گروه اضافه نمیکند. اگر میخواهید با یک حساب بدون دسترسی ویژه کار کنید، خودتان آن را اضافه کنید و سپس دوباره وارد شوید.
Bashsudo usermod -aG docker USER
لاگهای کانتینرها
فایل /etc/docker/daemon.json که هنگام تحویل نوشته میشود، هر کانتینر را به 3 فایل 10 مگابایتی محدود میکند. این فایل فقط در صورتی ایجاد میشود که از قبل وجود نداشته باشد. برای تغییر این مقادیر، آن را ویرایش کنید و سپس دیمن را ریاستارت کنید. تنظیمات جدید فقط روی کانتینرهایی اعمال میشود که پس از ریاستارت ساخته شدهاند.
Bashsudo systemctl restart docker
بهروزرسانیها
مخزن Docker در /etc/apt/sources.list.d/docker.sources تعریف شده است. بنابراین نسخههای جدید همراه با بهروزرسانیهای معمول apt میرسند. آنها را در زمانی انجام دهید که ریاستارت دیمن قابلقبول باشد، چون اگر گزینه live-restore فعال نباشد، ممکن است کانتینرهای شما متوقف شوند.
Bashsudo apt update && sudo apt install --only-upgrade docker-ce docker-ce-cli containerd.io
Ubuntu 20.04
Docker دیگر بهطور رسمی از Ubuntu 20.04 پشتیبانی نمیکند. با این حال، اگر مخزن Docker هنوز این نسخه را منتشر کند، دستورالعمل نصب باز هم تلاش میکند نصب را انجام دهد و یک هشدار در لاگ ثبت میکند. برای سرور عملیاتی، Ubuntu 22.04، Ubuntu 24.04، Debian 12 یا Debian 13 را ترجیح دهید که همگی پشتیبانی میشوند.
بکاپها
ایمیجها دوباره دانلود میشوند، اما دادههای شما نه. ولومهای نامدار، دایرکتوریهای مانتشده و فایلهای compose.yaml خود را همراه با متغیرهای محیطیشان بکاپ بگیرید. برای پایگاه داده، بهجای کپی ولوم در حالت روشن، خروجی منطقی (pg_dump، mysqldump) را ترجیح دهید.
