نصب Docker، پیکربندی Mirror و Proxy

نصب Docker روی سرور اوبونتو با docker.io

در مخازن رسمی توزیع اوبونتو، پکیج docker.io همراه با ابزارهای لازم نگهداری می‌شود. استفاده از این پکیج ساده‌ترین و سریع‌ترین راه برای راه‌اندازی محیط داکر روی سرور اوبونتو بدون نیاز به افزودن مخازن جانبی است.

برای نصب Docker و ابزار Docker Compose مراحل زیر را اجرا کنید:

گام ۱: به‌روزرسانی مخازن پکیج‌ها

1sudo apt update

گام ۲: نصب docker.io و ابزارهای مرتبط

1sudo apt install -y docker.io docker-compose-v2

نکته: بسته به نگارش اوبونتو، پلاگین Docker Compose ممکن است با بسته‌ی docker-compose-v2 یا docker-compose ارائه شود.

گام ۳: بررسی و فعال‌سازی سرویس داکر

بررسی وضعیت اجرای سرویس:

1sudo systemctl status docker

در صورتی که سرویس در حالت فعال (Active/Running) نباشد، آن را فعال و روی استارت‌آپ سیستم تنظیم کنید:

1sudo systemctl enable --now docker

اجرای دستورات داکر بدون sudo

به‌طور پیش‌فرض، سوکت ارتباطی داکر (/var/run/docker.sock) متعلق به کاربر root و گروه docker است. برای اینکه مجبور نباشید قبل از هر دستور داکر sudo بنویسید، کاربر فعلی خود را به گروه docker اضافه کنید:

1sudo usermod -aG docker $USER

سپس از نشست فعلی خارج شوید و دوباره متصل شوید (یا دستور زیر را برای اعمال تغییرات در نشست جاری بزنید):

1newgrp docker

اکنون می‌توانید بدون sudo نگارش داکر را بررسی کنید:

1docker version

چالش دانلود ایمیج‌ها در محیط‌های دارای محدودیت اینترنت

سرویس Docker Hub و رجیستری‌های کانتینر، ممکن است به دلیل تحریم‌های بین‌المللی یا محدودیت‌های شبکه به‌صورت مستقیم در دسترس نباشند. دو روش استاندارد برای حل این مسئله وجود دارد:

نکته‌ی مهم: برای دانلود ایمیج‌ها، اجرای تنها یکی از این دو روش کافی است. روش اول (استفاده از Registry Mirror) بسیار ساده‌تر، پایدارتر و گزینه‌ی پیشنهادی است. تنها در صورتی سراغ روش دوم (پروکسی) بروید که به میرورهای داکر دسترسی نداشته باشید.

روش اول: استفاده از Registry Mirror (میرورهای رجیستری) — روش پیشنهادی و ساده‌تر

سرورهای واسط و ارائه‌دهندگان زیرساخت داخلی، میروری از رجیستری داکر هاب ارائه می‌دهند تا دانلود ایمیج‌ها با سرعت بالا انجام شود.

برای تنظیم میرورها، فایل /etc/docker/daemon.json را با دسترسی ادمین بسازید یا ویرایش کنید:

1sudo nano /etc/docker/daemon.json

محتوای زیر را در آن قرار دهید (می‌توانید از میرورهای عمومی معتبر یا میرور اختصاصی خود استفاده کنید):

1{
2  "registry-mirrors": [
3    "https://docker.arvancloud.ir",
4    "https://docker.iranserver.com"
5  ]
6}

سپس سرویس داکر را مجدداً راه‌اندازی کنید تا تغییرات اعمال شود:

1sudo systemctl restart docker

برای اطمینان از اعمال میرورها:

1docker info | grep -A 3 "Registry Mirrors"

روش دوم: پیکربندی پروکسی برای Daemon (Systemd Proxy)

اگر سرور شما به یک پروکسی (مانند HTTP/HTTPS Proxy) دسترسی دارد، دستورات docker pull ترافیک خود را مستقیماً از طریق سرویس dockerd ارسال می‌کنند و متغیرهای محیطی معمولی شل روی آن اثری ندارد.

باید متغیرهای پروکسی را در تنظیمات سرویس systemd داکر وارد کنید:

۱. ایجاد دایرکتوری و فایل Drop-in برای سرویس داکر:

1sudo mkdir -p /etc/systemd/system/docker.service.d
2sudo nano /etc/systemd/system/docker.service.d/http-proxy.conf

۲. افزودن اطلاعات پروکسی:

1[Service]
2Environment="HTTP_PROXY=http://127.0.0.1:10808"
3Environment="HTTPS_PROXY=http://127.0.0.1:10808"
4Environment="NO_PROXY=localhost,127.0.0.1,docker-registry.local"

نکته: آدرس و پورت فوق را با مشخصات سرویس پروکسی واقعی خود جایگزین کنید.

۳. بارگذاری مجدد تنظیمات systemd و راه‌اندازی مجدد داکر:

1sudo systemctl daemon-reload
2sudo systemctl restart docker

برای بررسی اعمال متغیرهای پروکسی در داکر:

1sudo systemctl show --property=Environment docker

اعتبارسنجی نهایی با کانتینر hello-world

برای اطمینان از اینکه موتور داکر فعال است و ایمیج‌ها بدون مشکل دانلود می‌شوند، دستور زیر را اجرا کنید:

1docker run --rm hello-world

نمایش پیام “Hello from Docker!” نشان می‌دهد که:

  1. سرویس داکر فعال و آماده به کار است.
  2. دسترسی بدون روت با موفقیت کار می‌کند.
  3. اتصال به رجیستری (از طریق پروکسی یا میرور) برقرار بوده و ایمیج دانلود شده است.