dacker

نصب داکر روی Ubuntu و AlmaLinux در ایران

نصب Docker Engine با Buildx و Compose از مخزن داخلی dacker روی Ubuntu 24.04 و 22.04 و AlmaLinux/Rocky 9 و 8، بدون خطای ۴۰۳، و رفع خطاهای رایج نصب.

  • پیش‌نویس
  • آخرین بازبینی:
  • هنوز روی سرور واقعی آزموده نشده

راه‌حل سریع

برای نصب داکر (Docker) روی Ubuntu 24.04 این بلوک را کامل کپی و اجرا کنید. همه‌چیز از مخزن داخلی dacker می‌آید، پس خطای ۴۰۳ download.docker.com پیش نمی‌آید. برای توزیع‌های دیگر پایین‌تر را ببینید، یا در صفحهٔ Docker توزیع خود را انتخاب کنید.

Docker Engine29.8.1

  • Ubuntu 24.04
  • 95.8 MB
  • امضا و بررسی‌شده
جزئیات ←
bash · Ubuntu 24.04
  1. ۱کلید امضای dacker
    # 1) Add the dacker signing keysudo curl -fsSL https://repo.dacker.ir/dacker.gpg -o /usr/share/keyrings/dacker.gpg
  2. ۲افزودن مخزن
    # 2) Add the repositorysudo curl -fsSL https://repo.dacker.ir/apt/sources/dacker-docker.sources -o /etc/apt/sources.list.d/dacker-docker.sources
  3. ۳نصب
    # 3) Installsudo apt updatesudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  4. ۴راه‌اندازی سرویس
    # 4) Enable and start the servicesudo systemctl enable --now docker
  5. ۵بررسی نصب
    # 5) Check the installationdocker --versiondocker compose version
به‌جای فایل .sources، یک خط .list می‌خواهید؟
  1. جایگزین مرحلهٔ ۲
    echo "deb [arch=amd64 signed-by=/usr/share/keyrings/dacker.gpg] https://repo.dacker.ir/apt/docker noble main" | sudo tee /etc/apt/sources.list.d/dacker-docker.list

چرا دستورهای رسمی Docker از ایران کار نمی‌کنند

مستند رسمی Docker مخزن download.docker.com را اضافه می‌کند، که درخواست‌های IP ایران را با خطای 403 رد می‌کند. روی Ubuntu نتیجه این است:

text
Err:5 https://download.docker.com/linux/ubuntu noble InRelease  403  Forbidden [IP: … 443]E: Failed to fetch https://download.docker.com/linux/ubuntu/dists/noble/InRelease  403  Forbidden [IP: … 443]

و بعد از آن، چون فهرست بسته‌ها دانلود نشده، apt خود بسته را هم پیدا نمی‌کند:

text
Package docker-ce is not available, but is referred to by another package.This may mean that the package is missing, has been obsoleted, oris only available from another sourceE: Package 'docker-ce' has no installation candidate

dacker همان بسته‌های رسمی Docker را از داخل ایران ارائه می‌کند، با همان نام‌ها. پس فقط منبع عوض می‌شود و بقیهٔ کار (نام بسته‌ها، سرویس، دستورها) همانی است که در مستندات رسمی می‌خوانید.

پیش از شروع: نسخه‌های قدیمی را بردارید

بسته‌هایی که خود توزیع به اسم Docker دارد (مثل docker.io روی Ubuntu یا podman و runc روی EL) با بسته‌های رسمی Docker تداخل دارند. اگر نصبشان کرده‌اید، اول حذفشان کنید. imageها، containerها و volumeهای موجود در /var/lib/docker سر جایشان می‌مانند.

روی Ubuntu:

bash
sudo apt remove docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc

روی AlmaLinux / Rocky / RHEL:

bash
sudo dnf remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine podman runc

اگر هیچ‌کدام نصب نباشد، این دستورها فقط همین را اعلام می‌کنند و کاری نمی‌کنند.

چه چیزی نصب می‌شود

  • docker-ce: خود موتور Docker (سرویس dockerd).
  • docker-ce-cli: دستور docker.
  • containerd.io: runtime زیرین که containerها را اجرا می‌کند.
  • docker-buildx-plugin: ساخت image با BuildKit (docker buildx).
  • docker-compose-plugin: Compose نسخهٔ ۲، با دستور docker compose (با فاصله، نه خط تیره).

نسخهٔ دقیق هر بسته برای هر توزیع در صفحهٔ Docker آمده و از manifest مخزن خوانده می‌شود.

Ubuntu 22.04

روی Ubuntu 22.04 فایل مخزن به شکل یک‌خطی (.list) است؛ بقیه یکی است.

Docker Engine29.8.1

  • Ubuntu 22.04
  • 95.8 MB
  • امضا و بررسی‌شده
جزئیات ←
bash · Ubuntu 22.04
  1. ۱کلید امضای dacker
    # 1) Add the dacker signing keysudo curl -fsSL https://repo.dacker.ir/dacker.gpg -o /usr/share/keyrings/dacker.gpg
  2. ۲افزودن مخزن
    # 2) Add the repositorysudo curl -fsSL https://repo.dacker.ir/apt/sources/dacker-docker.list -o /etc/apt/sources.list.d/dacker-docker.list
  3. ۳نصب
    # 3) Installsudo apt updatesudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  4. ۴راه‌اندازی سرویس
    # 4) Enable and start the servicesudo systemctl enable --now docker
  5. ۵بررسی نصب
    # 5) Check the installationdocker --versiondocker compose version

AlmaLinux / Rocky / RHEL 9

همین دستورها روی CentOS Stream 9 هم کار می‌کنند. روی EL کلید امضای خود Docker وارد می‌شود و dnf امضای هر بسته را با آن می‌سنجد.

Docker Engine29.8.1

  • AlmaLinux / Rocky / RHEL 9
  • 101.1 MB
  • امضا و بررسی‌شده
جزئیات ←
bash · EL 9
  1. ۱کلید امضای سازنده
    # 1) Import the vendor signing keysudo rpm --import https://repo.dacker.ir/el/keys/docker.asc
  2. ۲افزودن مخزن
    # 2) Add the repositorysudo curl -fsSL https://repo.dacker.ir/el/repos/dacker-docker.repo -o /etc/yum.repos.d/dacker-docker.repo
  3. ۳نصب
    # 3) Installsudo dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  4. ۴راه‌اندازی سرویس
    # 4) Enable and start the servicesudo systemctl enable --now docker
  5. ۵بررسی نصب
    # 5) Check the installationdocker --versiondocker compose version

AlmaLinux / Rocky / RHEL 8

Docker Engine29.8.1

  • AlmaLinux / Rocky / RHEL 8
  • 102.9 MB
  • امضا و بررسی‌شده
جزئیات ←
bash · EL 8
  1. ۱کلید امضای سازنده
    # 1) Import the vendor signing keysudo rpm --import https://repo.dacker.ir/el/keys/docker.asc
  2. ۲افزودن مخزن
    # 2) Add the repositorysudo curl -fsSL https://repo.dacker.ir/el/repos/dacker-docker.repo -o /etc/yum.repos.d/dacker-docker.repo
  3. ۳نصب
    # 3) Installsudo dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  4. ۴راه‌اندازی سرویس
    # 4) Enable and start the servicesudo systemctl enable --now docker
  5. ۵بررسی نصب
    # 5) Check the installationdocker --versiondocker compose version

بعد از نصب

برای اجرای docker بدون sudo، کاربرتان را به گروه docker اضافه کنید و یک بار از سیستم خارج و دوباره وارد شوید:

bash
sudo usermod -aG docker $USER

عضویت در گروه docker عملاً دسترسی root روی آن سرور است. فقط به کاربرهایی بدهید که به آن‌ها اعتماد کامل دارید.

docker pull هنوز به Docker Hub وصل می‌شود که از ایران 403 می‌دهد. برای آن راهنمای رفع 403 در docker pull را ببینید؛ یک registry mirror کافی است.

فایروال و پورت‌های منتشرشده

Docker برای پورت‌هایی که با -p منتشر می‌کنید مستقیم قاعدهٔ iptables می‌سازد، و این قاعده‌ها پیش از قاعده‌های ufw بررسی می‌شوند. یعنی پورتی که با ufw بسته‌اید، اگر container آن را منتشر کند، از بیرون باز است. اگر سرویسی فقط باید روی خود سرور در دسترس باشد، آن را به 127.0.0.1 ببندید:

bash
docker run -d -p 127.0.0.1:8080:80 nginx

به‌روزرسانی

وقتی نسخهٔ تازه‌ای به مخزن dacker برسد (در صفحهٔ تغییرات ثبت می‌شود)، مثل هر بستهٔ دیگری به‌روز می‌شود: sudo apt update && sudo apt upgrade یا sudo dnf upgrade. containerهای در حال اجرا با restart سرویس Docker متوقف می‌شوند، مگر اینکه live-restore را فعال کرده باشید؛ پس به‌روزرسانی را در زمان مناسب انجام دهید.

خطاهای رایج

Cannot connect to the Docker daemon

text
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

سرویس Docker اجرا نمی‌شود. وضعیتش را ببینید و روشنش کنید؛ اگر روشن نشد، لاگ دلیلش را می‌گوید:

bash
sudo systemctl status docker --no-pagersudo systemctl enable --now dockersudo journalctl -u docker -n 30 --no-pager

permission denied while trying to connect to the Docker daemon socket

text
permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock

سرویس اجرا می‌شود اما کاربر شما عضو گروه docker نیست. بخش «بعد از نصب» را ببینید، یا دستور را با sudo اجرا کنید. با id -nG ببینید گروه docker در فهرست گروه‌های شما هست یا نه.

روی EL: تداخل containerd.io با runc یا podman

text
Error: Problem: problem with installed package buildah-…  - package buildah-… from @System requires runc >= …, but none of the providers can be installed  - package containerd.io-… from dacker-docker conflicts with runc provided by runc-… from @System

AlmaLinux و Rocky به‌طور پیش‌فرض podman، buildah و runc را دارند که با containerd.io تداخل دارند. اگر از podman استفاده نمی‌کنید، بخش «پیش از شروع» را اجرا کنید و نصب را تکرار کنید.

NO_PUBKEY در apt update

text
W: GPG error: https://repo.dacker.ir/apt/docker noble InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 1363921AA23CD7DB

کلید امضای dacker نصب نشده یا فایلش خراب است. مرحلهٔ ۱ همان بلوک دستور را دوباره اجرا کنید. برای اطمینان از خود کلید، صفحهٔ کلید امضا را ببینید.

docker-compose: command not found

Compose نسخهٔ ۲ یک plugin است و با docker compose (با فاصله) اجرا می‌شود. دستور قدیمی docker-compose (با خط تیره) نسخهٔ ۱ است که دیگر به‌روز نمی‌شود. در اسکریپت‌هایتان docker-compose را به docker compose تغییر دهید.

404 Not Found هنگام apt update

معمولاً یعنی توزیع شما پشتیبانی نمی‌شود (مثلاً Debian یا Ubuntu 20.04) یا فایل منبع توزیع دیگری را اضافه کرده‌اید. نام و نسخهٔ توزیع را با cat /etc/os-release بررسی کنید و دستور مخصوص همان را بگیرید.

دستور نصب برای توزیع شما

مرتبط