نصب داکر در سرورهای مستقر در ایران – راهنمای جامع
هدف این راهنما: قدمبهقدم مشکلات رایج هنگام نصب و استفاده از Docker روی سرورهای داخل ایران را برطرف میکنیم؛ از تنظیم DNS تا افزودن میرورهای بومی و در نهایت اجرای یک کانتینر تستی. همه دستورات در قالب بلاک‑کد قرار گرفتهاند تا بهراحتی در ترمینال کپی/پیست شوند.
فهرست مطالب
- پیشنیازها
- گام ۱ – تنظیم DNS سرور شکن
- گام ۲ – بهروزرسانی سیستم و نصب ابزارهای پایه
- گام ۳ – نصب Docker
- گام ۴ – پیکربندی Registry Mirror بومی
- گام ۵ – ریستارت و فعالسازی سرویس Docker
- گام ۶ – تست نهایی نصب
- نکات تکمیلی و عیبیابی
- جمعبندی
پیشنیازها
- سروری با یکی از توزیعهای Debian یا Ubuntu (ترجیحاً Ubuntu 20.04+ یا Debian 11+)
- دسترسی کاربر root یا کاربری که در گروه sudo باشد
- باز بودن پورتهای خروجی 443 و 80 روی فایروال برای دانلود بستهها و ایمیجها
گام ۱ – تنظیم DNS سرور شکن
Docker برای کشیدن ایمیجها به DNS سالم نیاز دارد. سرویس شکن دو DNS عمومی ارائه میکند که محدودیتهای تحریم را دور میزند:
sudo bash -c 'echo -e "nameserver 178.22.122.100\nnameserver 185.51.200.2" > /etc/resolv.conf'
نکته: اگر سیستم شما از
systemd-resolved
استفاده میکند ممکن است پس از ریبوت، فایل/etc/resolv.conf
بازنویسی شود. برای دائمیکردن:codesudo chattr +i /etc/resolv.conf # فایل را immutable میکند
گام ۲ – بهروزرسانی سیستم و نصب ابزارهای پایه
ابتدا مخزنها را تازه کرده و سیستم را بهروز میکنیم؛ سپس ابزارهای پایه را نصب میکنیم:
sudo apt-get update
sudo apt-get upgrade -y
sudo apt-get install -y curl socat git
- curl برای دانلود اسکریپت نصب Docker
- socat و git برای برخی پروژههای داکری (اختیاری ولی کاربردی)
گام ۳ – نصب Docker
سادهترین راه، استفاده از اسکریپت رسمی Docker است:
curl -fsSL https://get.docker.com | sh
پس از اتمام نصب، نسخه را بررسی کنید:
docker --version
# خروجی نمونه:
# Docker version 25.0.4, build deadbeef
گام ۴ – پیکربندی Registry Mirror بومی
به دلیل کندی یا محدودیت ارتباط با hub.docker.com، استفاده از میرورهای ایرانی سرعت کشیدن (pull) ایمیجها را افزایش میدهد. فقط یکی از تنظیمات زیر را در فایل daemon.json
قرار دهید:
sudo nano /etc/docker/daemon.json
IranServer
{
"registry-mirrors": ["https://docker.iranserver.com"]
}
HaioCloud
{
"registry-mirrors": ["https://docker.haiocloud.com"]
}
ParsPack
{
"registry-mirrors": ["https://registry.docker.ir"]
}
AbrArvan
{
"registry-mirrors": ["https://docker.arvancloud.ir"]
}
Dockeriran (ریجستری لوکال روی پورت ۵۰۰۰)
{
"registry-mirrors": ["https://docker.host:5000"]
}
راهنمای انتخاب: اگر سرور شما در همان دیتاسنتر میرور است، همان را برگزینید تا کمترین latency را داشته باشید. همچنین میتوانید چند میرور را در آرایه قرار دهید؛ ترتیب آنها بهترتیب اولویت است.
گام ۵ – ریستارت و فعالسازی سرویس Docker
پس از تغییر daemon.json
سرویس Docker را دوباره بارگذاری کنید:
sudo systemctl daemon-reload
sudo systemctl restart docker
sudo systemctl enable docker # برای اجرا پس از بوت
گام ۶ – تست نهایی نصب
- کاربر فعلی را به گروه
docker
اضافه کنید و یک بار logout/login انجام دهید:
sudo usermod -aG docker $USER
- اجرای کانتینر تستی:
docker run --rm hello-world
خروجی موفق شامل پیام Hello from Docker! است.
نکات تکمیلی و عیبیابی
مشکل | راهکار سریع |
---|---|
پس از ریبوت DNS بازنشانی میشود | chattr +i /etc/resolv.conf یا پیکربندی در /etc/systemd/resolved.conf |
خطای «permission denied» هنگام اجرای Docker بدون sudo | sudo usermod -aG docker $USER سپس خروج و ورود مجدد |
سرعت پایین Pull حتی با میرور | میرور را عوض کنید یا با ping /curl -I تاخیر را چک کنید |
عدم نیاز به IPv6 | در daemon.json گزینه "ipv6": false را اضافه کنید |
جمعبندی
با تنظیم DNS شکن، نصب Docker از مخزن رسمی و افزودن یک Registry Mirror بومی، تمام محدودیتهای رایج در سرورهای ایران رفع میشود. حالا میتوانید بدون دردسر ایمیجهای دلخواه را کشیده و کانتینرهای خود را اجرا کنید.
موفق باشید و کانتینرهایتان همیشه آنلاین! 🚀