راهحل سریع
برای نصب داکر (Docker) روی Ubuntu 24.04 این بلوک را کامل کپی و اجرا کنید. همهچیز از مخزن داخلی dacker میآید، پس خطای ۴۰۳ download.docker.com پیش نمیآید. برای توزیعهای دیگر پایینتر را ببینید، یا در صفحهٔ Docker توزیع خود را انتخاب کنید.
Docker Engine29.8.1
- Ubuntu 24.04
- 95.8 MB
- امضا و بررسیشده
-
۱کلید امضای dacker
# 1) Add the dacker signing keysudo curl -fsSL https://repo.dacker.ir/dacker.gpg -o /usr/share/keyrings/dacker.gpg -
۲افزودن مخزن
# 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) Installsudo apt updatesudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -
۴راهاندازی سرویس
# 4) Enable and start the servicesudo systemctl enable --now docker -
۵بررسی نصب
# 5) Check the installationdocker --versiondocker compose version
بهجای فایل .sources، یک خط .list میخواهید؟
-
جایگزین مرحلهٔ ۲
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 نتیجه این است:
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 خود بسته را هم پیدا نمیکند:
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 candidatedacker همان بستههای رسمی Docker را از داخل ایران ارائه میکند، با همان نامها. پس فقط منبع عوض میشود و بقیهٔ کار (نام بستهها، سرویس، دستورها) همانی است که در مستندات رسمی میخوانید.
پیش از شروع: نسخههای قدیمی را بردارید
بستههایی که خود توزیع به اسم Docker دارد (مثل docker.io روی Ubuntu یا podman و runc روی EL) با بستههای رسمی Docker تداخل دارند. اگر نصبشان کردهاید، اول حذفشان کنید. imageها، containerها و volumeهای موجود در /var/lib/docker سر جایشان میمانند.
روی Ubuntu:
sudo apt remove docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runcروی AlmaLinux / Rocky / RHEL:
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
- امضا و بررسیشده
-
۱کلید امضای dacker
# 1) Add the dacker signing keysudo curl -fsSL https://repo.dacker.ir/dacker.gpg -o /usr/share/keyrings/dacker.gpg -
۲افزودن مخزن
# 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) Installsudo apt updatesudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -
۴راهاندازی سرویس
# 4) Enable and start the servicesudo systemctl enable --now docker -
۵بررسی نصب
# 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
- امضا و بررسیشده
-
۱کلید امضای سازنده
# 1) Import the vendor signing keysudo rpm --import https://repo.dacker.ir/el/keys/docker.asc -
۲افزودن مخزن
# 2) Add the repositorysudo curl -fsSL https://repo.dacker.ir/el/repos/dacker-docker.repo -o /etc/yum.repos.d/dacker-docker.repo -
۳نصب
# 3) Installsudo dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -
۴راهاندازی سرویس
# 4) Enable and start the servicesudo systemctl enable --now docker -
۵بررسی نصب
# 5) Check the installationdocker --versiondocker compose version
AlmaLinux / Rocky / RHEL 8
Docker Engine29.8.1
- AlmaLinux / Rocky / RHEL 8
- 102.9 MB
- امضا و بررسیشده
-
۱کلید امضای سازنده
# 1) Import the vendor signing keysudo rpm --import https://repo.dacker.ir/el/keys/docker.asc -
۲افزودن مخزن
# 2) Add the repositorysudo curl -fsSL https://repo.dacker.ir/el/repos/dacker-docker.repo -o /etc/yum.repos.d/dacker-docker.repo -
۳نصب
# 3) Installsudo dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -
۴راهاندازی سرویس
# 4) Enable and start the servicesudo systemctl enable --now docker -
۵بررسی نصب
# 5) Check the installationdocker --versiondocker compose version
بعد از نصب
برای اجرای docker بدون sudo، کاربرتان را به گروه docker اضافه کنید و یک بار از سیستم خارج و دوباره وارد شوید:
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 ببندید:
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
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?سرویس Docker اجرا نمیشود. وضعیتش را ببینید و روشنش کنید؛ اگر روشن نشد، لاگ دلیلش را میگوید:
sudo systemctl status docker --no-pagersudo systemctl enable --now dockersudo journalctl -u docker -n 30 --no-pagerpermission denied while trying to connect to the Docker daemon socket
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
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 @SystemAlmaLinux و Rocky بهطور پیشفرض podman، buildah و runc را دارند که با containerd.io تداخل دارند. اگر از podman استفاده نمیکنید، بخش «پیش از شروع» را اجرا کنید و نصب را تکرار کنید.
NO_PUBKEY در apt update
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 بررسی کنید و دستور مخصوص همان را بگیرید.