داکر: تفاوت میان نسخهها
بدون خلاصۀ ویرایش |
|||
خط ۵۵: | خط ۵۵: | ||
برای شروع کار با Docker Engine در Ubuntu، مطمئن شوید که پیش نیازها را دارید و سپس مراحل نصب را دنبال کنید. | برای شروع کار با Docker Engine در Ubuntu، مطمئن شوید که پیش نیازها را دارید و سپس مراحل نصب را دنبال کنید. | ||
=== '''موارد پیشنیاز''': === | ==== '''موارد پیشنیاز''': ==== | ||
'''محدودیت های فایروال''' | '''محدودیت های فایروال''' | ||
قبل از نصب Docker، مطمئن شوید که پیامدهای امنیتی زیر و ناسازگاریهای فایروال را در نظر گرفتهاید.اگر از ufw یا firewalld برای مدیریت تنظیمات فایروال استفاده میکنید، توجه داشته باشید که وقتی پورتهای کانتینر را با استفاده از Docker در معرض دید قرار میدهید، این پورتها قوانین فایروال شما را دور میزنند. Docker فقط با iptables-nft و iptables-legacy سازگار است. قوانین فایروال ایجاد شده با nft در سیستمی که Docker نصب شده است پشتیبانی نمیشود. اطمینان حاصل کنید که مجموعه قوانین فایروال که از آن استفاده میکنید با iptables یا ip6tables ایجاد میشوند و آنها را به زنجیرۀ DOCKER-USER اضافه میکنید. | قبل از نصب Docker، مطمئن شوید که پیامدهای امنیتی زیر و ناسازگاریهای فایروال را در نظر گرفتهاید.اگر از ufw یا firewalld برای مدیریت تنظیمات فایروال استفاده میکنید، توجه داشته باشید که وقتی پورتهای کانتینر را با استفاده از Docker در معرض دید قرار میدهید، این پورتها قوانین فایروال شما را دور میزنند. Docker فقط با iptables-nft و iptables-legacy سازگار است. قوانین فایروال ایجاد شده با nft در سیستمی که Docker نصب شده است پشتیبانی نمیشود. اطمینان حاصل کنید که مجموعه قوانین فایروال که از آن استفاده میکنید با iptables یا ip6tables ایجاد میشوند و آنها را به زنجیرۀ DOCKER-USER اضافه میکنید. | ||
=== | |||
==== '''عوامل مورد نیاز برای سیستمعامل''' ==== | |||
برای نصب Docker Engine، به نسخۀ 64 بیتی یکی از این نسخههای Ubuntu نیاز دارید: | برای نصب Docker Engine، به نسخۀ 64 بیتی یکی از این نسخههای Ubuntu نیاز دارید: | ||
خط ۶۹: | خط ۷۰: | ||
Docker Engine برای Ubuntu با معماریهای x86_64 (یا amd64)، armhf، arm64، s390x و ppc64le (ppc64el) سازگار است. | Docker Engine برای Ubuntu با معماریهای x86_64 (یا amd64)، armhf، arm64، s390x و ppc64le (ppc64el) سازگار است. | ||
=== '''نسخههای قدیمی را حذف کنید''': === | ==== '''نسخههای قدیمی را حذف کنید''': ==== | ||
قبل از اینکه Docker Engine را نصب کنید، باید پکیجهای متناقض را حذف کنید. توزیع لینوکس شما ممکن است پکیجهای Docker غیررسمی ارائه کند که ممکن است با پکیجهای رسمی ارائهشده توسط Docker مغایرت داشته باشد. قبل از نصب نسخۀ رسمی Docker Engine باید این پکیجها را حذف کنید. | قبل از اینکه Docker Engine را نصب کنید، باید پکیجهای متناقض را حذف کنید. توزیع لینوکس شما ممکن است پکیجهای Docker غیررسمی ارائه کند که ممکن است با پکیجهای رسمی ارائهشده توسط Docker مغایرت داشته باشد. قبل از نصب نسخۀ رسمی Docker Engine باید این پکیجها را حذف کنید. | ||
خط ۲۲۷: | خط ۲۲۸: | ||
در حال حاضر Docker Engine را با موفقیت نصب و راهاندازی کردهاید. سرویس docker به طور خودکار در توزیعهای مبتنی بر Debian شروع میشود. در توزیعهای مبتنی بر RPM، مانند CentOS، Fedora، RHEL یا SLES، باید آن را به صورت دستی با استفاده از systemctl یا فرمان سرویس مناسب راهاندازی کنید. همانطور که پیام نشان میدهد، کاربران غیر روت نمیتوانند دستورات Docker را به طور پیشفرض اجرا کنند. | در حال حاضر Docker Engine را با موفقیت نصب و راهاندازی کردهاید. سرویس docker به طور خودکار در توزیعهای مبتنی بر Debian شروع میشود. در توزیعهای مبتنی بر RPM، مانند CentOS، Fedora، RHEL یا SLES، باید آن را به صورت دستی با استفاده از systemctl یا فرمان سرویس مناسب راهاندازی کنید. همانطور که پیام نشان میدهد، کاربران غیر روت نمیتوانند دستورات Docker را به طور پیشفرض اجرا کنند. | ||
=== نصب نسخههای پیش از انتشار === | ==== نصب نسخههای پیش از انتشار ==== | ||
Docker همچنین یک convenience script را در https://test.docker.com/ برای نصب نسخههای اولیۀ Docker در لینوکس ارائه میکند. این اسکریپت برابر با اسکریپت get.docker.com است، اما Package Manager شما را برای استفاده از کانال آزمایشی مخزن پکیج Docker پیکربندی میکند. کانال آزمایشی شامل هر دو نسخۀ پایدار و پیش انتشار (نسخ@ بتا، نامزدهای انتشار) Docker است. از این اسکریپت برای دسترسی زودهنگام به نسخههای جدید و ارزیابی آنها در یک محیط آزمایشی قبل از انتشار به عنوان پایدار استفاده کنید. | Docker همچنین یک convenience script را در https://test.docker.com/ برای نصب نسخههای اولیۀ Docker در لینوکس ارائه میکند. این اسکریپت برابر با اسکریپت get.docker.com است، اما Package Manager شما را برای استفاده از کانال آزمایشی مخزن پکیج Docker پیکربندی میکند. کانال آزمایشی شامل هر دو نسخۀ پایدار و پیش انتشار (نسخ@ بتا، نامزدهای انتشار) Docker است. از این اسکریپت برای دسترسی زودهنگام به نسخههای جدید و ارزیابی آنها در یک محیط آزمایشی قبل از انتشار به عنوان پایدار استفاده کنید. | ||
خط ۲۳۶: | خط ۲۳۷: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
=== آپگرید داکر بعد از استفاده از روش convenience script: === | ====== آپگرید داکر بعد از استفاده از روش convenience script: ====== | ||
اگر Docker را با استفاده از convenience script نصب کردهاید، باید Docker را مستقیماً با استفاده از package manager خود ارتقا دهید. هیچ مزیتی برای اجرای مجدد convenience script وجود ندارد. اگر بخواهد مخازنی را که از قبل در ماشین هاست وجود دارد دوباره نصب کند، اجرای مجدد آن میتواند مشکلاتی را ایجاد کند. | اگر Docker را با استفاده از convenience script نصب کردهاید، باید Docker را مستقیماً با استفاده از package manager خود ارتقا دهید. هیچ مزیتی برای اجرای مجدد convenience script وجود ندارد. اگر بخواهد مخازنی را که از قبل در ماشین هاست وجود دارد دوباره نصب کند، اجرای مجدد آن میتواند مشکلاتی را ایجاد کند. | ||
== حذف Docker Engine == | == حذف Docker Engine == | ||
خط ۲۴۴: | خط ۲۴۵: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
ایمیجها، کانتینرها، حجمها یا فایلهای پیکربندی سفارشی روی هاست، بهطور خودکار حذف نمیشوند. برای حذف همۀ ایمیجها، کانتینرها و حجمها: | |||
<syntaxhighlight lang="bash" line="1"> | <syntaxhighlight lang="bash" line="1"> | ||
sudo rm -rf /var/lib/docker | sudo rm -rf /var/lib/docker | ||
خط ۴۳۰: | خط ۴۳۱: | ||
</syntaxhighlight>در حال حاضر Docker Engine را با موفقیت نصب و راهاندازی کردهاید. سرویس docker به طور خودکار در توزیعهای مبتنی بر Debian شروع میشود. در توزیعهای مبتنی بر RPM، مانند CentOS، Fedora، RHEL یا SLES، باید آن را به صورت دستی با استفاده از systemctl یا فرمان سرویس مناسب راهاندازی کنید. همانطور که پیام نشان میدهد، کاربران غیر روت نمیتوانند دستورات Docker را به طور پیشفرض اجرا کنند. | </syntaxhighlight>در حال حاضر Docker Engine را با موفقیت نصب و راهاندازی کردهاید. سرویس docker به طور خودکار در توزیعهای مبتنی بر Debian شروع میشود. در توزیعهای مبتنی بر RPM، مانند CentOS، Fedora، RHEL یا SLES، باید آن را به صورت دستی با استفاده از systemctl یا فرمان سرویس مناسب راهاندازی کنید. همانطور که پیام نشان میدهد، کاربران غیر روت نمیتوانند دستورات Docker را به طور پیشفرض اجرا کنند. | ||
=== نصب نسخههای پیش از انتشار | ====== نصب نسخههای پیش از انتشار ====== | ||
Docker همچنین یک convenience script را در <nowiki>https://test.docker.com</nowiki> برای نصب نسخههای اولیۀ Docker در لینوکس ارائه میکند. این اسکریپت برابر با اسکریپت get.docker.com است، اما Package Manager شما را برای استفاده از کانال آزمایشی مخزن پکیج Docker پیکربندی میکند. کانال آزمایشی شامل هر دو نسخۀ پایدار و پیش انتشار (نسخۀ بتا، نامزدهای انتشار) Docker است. از این اسکریپت برای دسترسی زودهنگام به نسخههای جدید و ارزیابی آنها در یک محیط آزمایشی قبل از انتشار به عنوان پایدار استفاده کنید. | Docker همچنین یک convenience script را در <nowiki>https://test.docker.com</nowiki> برای نصب نسخههای اولیۀ Docker در لینوکس ارائه میکند. این اسکریپت برابر با اسکریپت get.docker.com است، اما Package Manager شما را برای استفاده از کانال آزمایشی مخزن پکیج Docker پیکربندی میکند. کانال آزمایشی شامل هر دو نسخۀ پایدار و پیش انتشار (نسخۀ بتا، نامزدهای انتشار) Docker است. از این اسکریپت برای دسترسی زودهنگام به نسخههای جدید و ارزیابی آنها در یک محیط آزمایشی قبل از انتشار به عنوان پایدار استفاده کنید. | ||
نسخهٔ ۱۴ دسامبر ۲۰۲۴، ساعت ۱۵:۳۴
Docker Engine
Docker Engine یک فناوری کانتینرسازی متن باز (Open Source) برای ساخت و کانتینر کردن برنامههای کاربردی شما میباشد. و به عنوان یک برنامۀ Client-Server همراه با ویژگیهای زیر عمل میکند:
- با یک فرآیند دایمون طولانی مدت عمل می کند.
- دارای APIهایی میباشد که قابلیت تشخیص رابطهایی (Interfaces) را دارد که برنامه به واسطۀ این رابطها با Docker Deamon در ارتباط است.
- دارای محیط تحت خط فرمان (CLI) در Client Docker.
CLI از داکر APIها برای کنترل یا تعامل با Docker Deamon از طریق اسکریپت نویسی یا دستورات مستقیم CLI استفاده میکند. Deamon مسئولیت ساخت عواملی همچون: تطاویر، کانتینرها، شبکهها و حجم فضای قابل استفاده را ایجاد و مدیریت میکند. بسیاری از برنامههای دیگر داکر از یک API و CLI مرتبط استفاده میکنند. برای جزئیات بیشتر میتوانید به Docker Architecture مراجعه کنید.
لایسنس کردن
Engine تحت مجوز Apache، نسخه 2.0 لایسنس دارد.
نصب (Docker Engine)
Docker Engine برای Windows ،macOS و Linux از طریق Docker Desktop در دسترس است. همچنین در جدول زیر میتوانید پلتفرمهای پشتیبانی شده را مشاهده کنید.
پلتفرم | x86_64 / amd64 | arm64 / aarch64 | arm (32-bit) | ppc64le | s390x |
---|---|---|---|---|---|
CentOS | ✅ | ✅ | ✅ | ||
Debian | ✅ | ✅ | ✅ | ✅ | |
Fedora | ✅ | ✅ | ✅ | ||
Raspberry Pi OS (32-bit) | ✅ | ||||
RHEL | ✅ | ✅ | ✅ | ||
SLES | ✅ | ||||
Ubuntu | ✅ | ✅ | ✅ | ✅ | ✅ |
Binaries | ✅ | ✅ | ✅ |
دیگر توزیعهای لینوکس
- اگر از مشتقات Debian مانند "BunsenLabs Linux" ،"Kali Linux" یا "LMDE" (Mint مبتنی بر Debian) استفاده میکنید، باید دستورالعملهای نصب Debian را دنبال کنید، نسخۀ توزیع خود را جایگزین نسخۀ مربوطۀ Debian کنید.
- بدین ترتیب، اگر از مشتقات Ubuntu مانند "Kubuntu" ،"Lubuntu" یا "Xubuntu" استفاده می کنید، باید دستورالعملهای نصب Ubuntu را دنبال کنید و نسخۀ توزیع خود را جایگزین نسخۀ مربوطه کنید.
- برخی از توزیعهای لینوکس پکیجهایی از Docker Engine را از طریق مخازن (Repository) خود ارائه میکنند. این پکیجها توسط نگهبانان پکیج توزیع لینوکس (Linux distribution's package maintainers) ساخته و نگهداری میشوند و ممکن است تفاوتهایی در پیکربندی داشته باشند یا از کد منبع اصلاح شده ساخته شده باشند. Docker در انتشار این بستهها دخالتی ندارد و شما باید هر گونه اشکال یا مشکل مربوط به این پکیجها را به ردیاب مشکل توزیع لینوکس خود (distribution's issue tracker) گزارش دهید.
همچنین Docker، فایلهای باینری را برای نصب دستی Docker Engine ارائه میدهد. این باینریها به صورت دستی مرتبط هستند و میتوانید از آنها در هر توزیع لینوکس استفاده کنید.
کانالهای انتشار
stable channel: آخرین نسخههای منتشر شده را برای دسترسی عمومی به شما ارائه میدهد. test channel: نسخههای پیش از انتشار را در اختیار شما قرار میدهد که قبل از در دسترس بودن عمومی برای آزمایش آماده هستند. هشدار! در زمان استفاده از کانال تست مراقب باشید چرا که نسخههای پیش از انتشار شامل ویژگیهای آزمایشی و دسترسی اولیه هستند که در معرض تغییرات اساسی میباشند.
Docker Engine توسط Moby project maintainers و اعضای انجمن پشتیبانی میشود. Docker از Docker Engine پشتیبانی نمیکند بلکه از محصولات Docker پشتیبانی میکند، از جمله Docker Desktop که از Docker Engine به عنوان یکی از اجزای خود استفاده میکند.
مسیر Upgrade
نسخههای پچ همیشه با نسخۀ اصلی و فرعی آن سازگار هستند.
نصب Docker Engine بر روی Ubuntu:
برای شروع کار با Docker Engine در Ubuntu، مطمئن شوید که پیش نیازها را دارید و سپس مراحل نصب را دنبال کنید.
موارد پیشنیاز:
محدودیت های فایروال
قبل از نصب Docker، مطمئن شوید که پیامدهای امنیتی زیر و ناسازگاریهای فایروال را در نظر گرفتهاید.اگر از ufw یا firewalld برای مدیریت تنظیمات فایروال استفاده میکنید، توجه داشته باشید که وقتی پورتهای کانتینر را با استفاده از Docker در معرض دید قرار میدهید، این پورتها قوانین فایروال شما را دور میزنند. Docker فقط با iptables-nft و iptables-legacy سازگار است. قوانین فایروال ایجاد شده با nft در سیستمی که Docker نصب شده است پشتیبانی نمیشود. اطمینان حاصل کنید که مجموعه قوانین فایروال که از آن استفاده میکنید با iptables یا ip6tables ایجاد میشوند و آنها را به زنجیرۀ DOCKER-USER اضافه میکنید.
عوامل مورد نیاز برای سیستمعامل
برای نصب Docker Engine، به نسخۀ 64 بیتی یکی از این نسخههای Ubuntu نیاز دارید:
- Ubuntu Oracular 24.10
- Ubuntu Noble 24.04 (LTS)
- Ubuntu Jammy 22.04 (LTS)
- Ubuntu Focal 20.04 (LTS)
Docker Engine برای Ubuntu با معماریهای x86_64 (یا amd64)، armhf، arm64، s390x و ppc64le (ppc64el) سازگار است.
نسخههای قدیمی را حذف کنید:
قبل از اینکه Docker Engine را نصب کنید، باید پکیجهای متناقض را حذف کنید. توزیع لینوکس شما ممکن است پکیجهای Docker غیررسمی ارائه کند که ممکن است با پکیجهای رسمی ارائهشده توسط Docker مغایرت داشته باشد. قبل از نصب نسخۀ رسمی Docker Engine باید این پکیجها را حذف کنید.
بستههای غیر رسمی برای حذف عبارتند از:
docker.io docker-compose
docker-compose-v2
docker-doc
podman-docker
علاوهبراین، Docker Engine به containerd و runc وابسته است. Docker Engine این وابستگیها را به عنوان یک بستۀ واحد: containerd.io بستهبندی می کند. اگر قبلاً containerd یا runc را نصب کردهاید، آنها را برای جلوگیری از تداخل با نسخههای بستهبندی شده با Docker Engine، حذف کنید.
برای حذف میتوانید از دستور زیر استفاده کنید:
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done
ممکن است apt-get گزارش دهد که هیچ یک از این پکیجها نصب نشدهاند.
ایمیجها، کانتینرها، حجمها و شبکههایی که در /var/lib/docker/ ذخیره شدهاند، هنگام حذف Docker به طور خودکار حذف نمیشوند. اگر ترجیح میدهید هرگونه دادۀ موجود را پاک کنید، بخش حذف Docker Engine را بخوانید.
=== انواع روشهای نصب ===
شما به روشهای مختلفی میتوانید داکر را بر روی سیستم خودتان نصب کنید فقط کافیست بگویید که به چه چیزی نیاز دارید. Docker Engine به همراه Docker Desktop برای لینوکس ارائه میشود. این سادهترین و سریعترین راه برای شروع است. Docker Engine را از مخزن apt Docker تنظیم و نصب کنید. آن را به صورت دستی نصب کنید و آپدیتها را به صورت دستی مدیریت کنید. از یک convenience scriptاستفاده کنید.
نصب داکر با استفاده از apt repository:
قبل از اینکه Docker Engine را برای اولین بار روی یک ماشین هاست جدید نصب کنید، باید مخزن Docker apt را راه اندازی کنید. پس از آن، می توانید Docker را از مخزن نصب و بهروز کنید.
- پیاده سازی apt repository برای داکر:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.as
- Repository خود را به Apt اضافه کنید:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
نکته!
اگر از توزیع مشتق اوبونتو مانند Linux Mint استفاده میکنید، ممکن است لازم باشد به جای VERSION_CODENAME از UBUNTU_CODENAME استفاده کنید.
نصب پکیجهای داکر:
برای نصب آخرین ورژن داکر، مراحل زیر را پیش ببرید:
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
با اجرای تصویر hello-world اطمینان حاصل کنید که نصب با موفقیت انجام شده است:
sudo docker run hello-world
این دستور یک تصویر آزمایشی را دانلود کرده و در یک کانتینر اجرا میکند. هنگامی که کانتینر اجرا شود، یک پیام تأیید چاپ میکند و خارج میشود. اکنون Docker Engine را با موفقیت نصب و راهاندازی کردهاید.
راهنمایی
اگر در هنگام اجرای داکر بدون دسترسی root خطا دریافت میکنید:
در این صورت گروه کاربری داکر (docker user group) وجود دارد اما هیچ کاربری ندارد، به همین دلیل است که برای اجرای دستورات داکر باید از sudo استفاده کنید. در postinstall لینوکس ادامه دهید تا به کاربران غیرمجاز اجازه دهید دستورات Docker و سایر مراحل پیکربندی اختیاری را اجرا کنند.
آپگرید کردن Docker Engine
برای آپگرید Docker Engine، فایلهای پکیج جدیدتر را دانلود کرده و با توجه به فایلهای جدید، مراحل نصب را تکرار کنید.
نصب داکر با استفاده از پکیج:
اگر نمیتوانید از مخزن Docker's apt برای نصب Docker Engine استفاده کنید، میتوانید فایل deb را برای نسخۀ خود دانلود کرده و به صورت دستی نصب کنید. هر بار که میخواهید Docker Engine را آپگرید کنید، باید یک فایل جدید دانلود کنید.
- به آدرس https://download.docker.com/linux/ubuntu/dists/ بروید.
- نسخه اوبونتو خود را در لیست انتخاب کنید.
- به بخش pool/stable/ بروید و معماری قابل اجرا (amd64، armhf، arm64، یا s390x) را انتخاب کنید.
- فایلهای deb زیر را برای پکیجهای Docker Engine، CLI، containerd و Docker Compose دانلود کنید:
containerd.io_<version>_<arch>.deb
docker-ce_<version>_<arch>.deb
docker-ce-cli_<version>_<arch>.deb
docker-buildx-plugin_<version>_<arch>.deb
docker-compose-plugin_<version>_<arch>.deb
پکیجهای .deb را نصب کنید. مسیرهای مثال زیر را به جایی که پکیجهای Docker را دانلود کردهاید اضافه کنید.
sudo dpkg -i ./containerd.io_<version>_<arch>.deb \
./docker-ce_<version>_<arch>.deb \
./docker-ce-cli_<version>_<arch>.deb \
./docker-buildx-plugin_<version>_<arch>.deb \
./docker-compose-plugin_<version>_<arch>.deb
بعد از آن Docker Daemon به صورت خودکار شروع به کار خواهد کرد. سپس با اجرای تصویر hello-world اطمینان حاصل کنید که نصب با موفقیت انجام شده است:
sudo service docker start
$ sudo docker run hello-world
این دستور یک تصویر آزمایشی را دانلود کرده و در یک کانتینر اجرا میکند. هنگامی که کانتینر اجرا میشود، یک پیام تأیید چاپ میکند و خارج میشود. اکنون Docker Engine را با موفقیت نصب و راهاندازی کردهاید.
راهنمایی
اگر در هنگام اجرا داکر بدون دسترسی root خطا دریافت میکنید:
در این صورت گروه کاربری داکر (docker user group) وجود دارد اما هیچ کاربری ندارد، به همین دلیل است که برای اجرای دستورات داکر باید از sudo استفاده کنید. به postinstall لینوکس ادامه دهید تا به کاربران غیرمجاز اجازه دهید دستورات Docker و سایر مراحل پیکربندی اختیاری را اجرا کنند.
نصب داکر با استفاده از convenience script:
Docker یک convenience script در https://get.docker.com/ برای نصب Docker در محیطهای Development به صورت غیر تعاملی ارائه میدهد. convenience script برای محیطهای Production توصیه نمیشود، اما برای ایجاد یک اسکریپت تدارکاتی متناسب با نیازهای شما مفید است. همچنین برای آشنایی با نصب به طریق استفاده از مخزن پکیج، به نصب با استفاده از مراحل مخزن (Repository) مراجعه کنید. همچنین در نظر داشته باشید کد منبع این اسکریپت متن باز است و میتوانید آن را در مخزن docker-install در GitHub پیدا کنید.
همیشه اسکریپتهای دانلود شده از اینترنت را قبل از اجرا بررسی کنید. قبل از نصب، خود را با خطرات و محدودیتهای احتمالی convenience script آشنا کنید:
- اسکریپت برای اجرا به دسترسی root یا sudo نیاز دارد.
- اسکریپت سعی میکند توزیع و نسخۀ لینوکس شما را شناسایی کند و سیستم مدیریت پکیج را برای شما پیکربندی کند.
- اسکریپت به شما اجازه نمیدهد که اکثر پارامترهای نصب را سفارشی کنید.
- اسکریپت وابستگیها و توصیهها را بدون درخواست تایید نصب میکند. این ممکن است بسته به پیکربندی فعلی دستگاه هاست شما، تعداد زیادی بسته نصب کند.
- به طور پیش فرض، اسکریپت آخرین نسخۀ پایدار Docker، Containerd و Runc را نصب میکند. هنگام استفاده از این اسکریپت برای تهیه یک ماشین، ممکن است منجر به آپگرید نسخۀ اصلی غیرمنتظره Docker شود. همیشه قبل از استقرار در سیستمهای Production خود، آپگریدها را در یک محیط آزمایشی امتحان کنید.
- این اسکریپت برای آپگرید نصب Docker موجود طراحی نشده است. هنگام استفاده از اسکریپت برای آپگرید یک نصب موجود، ممکن است وابستگیها به نسخۀ مورد نظر آپگرید نشوند و در نتیجه نسخههای قدیمی ایجاد شوند.
راهنمایی
پیشنمایش مراحل اسکریپت قبل از اجرا... اسکریپت را با گزینه --dry-run اجرا کنید تا بدانید اسکریپت چه مراحلی را هنگام فراخوانی اجرا خواهد کرد:
curl -fsSL https://get.docker.com -o get-docker.sh
$ sudo sh ./get-docker.sh --dry-run
این مثال اسکریپت را از https://get.docker.com/ دانلود کرده و آن را برای نصب آخرین نسخۀ پایدار Docker در لینوکس اجرا میکند:
curl -fsSL https://get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh
Executing docker install script, commit: 7cae5f8b0decc17d6571f9f52eb840fbc13b2737
<...>
در حال حاضر Docker Engine را با موفقیت نصب و راهاندازی کردهاید. سرویس docker به طور خودکار در توزیعهای مبتنی بر Debian شروع میشود. در توزیعهای مبتنی بر RPM، مانند CentOS، Fedora، RHEL یا SLES، باید آن را به صورت دستی با استفاده از systemctl یا فرمان سرویس مناسب راهاندازی کنید. همانطور که پیام نشان میدهد، کاربران غیر روت نمیتوانند دستورات Docker را به طور پیشفرض اجرا کنند.
نصب نسخههای پیش از انتشار
Docker همچنین یک convenience script را در https://test.docker.com/ برای نصب نسخههای اولیۀ Docker در لینوکس ارائه میکند. این اسکریپت برابر با اسکریپت get.docker.com است، اما Package Manager شما را برای استفاده از کانال آزمایشی مخزن پکیج Docker پیکربندی میکند. کانال آزمایشی شامل هر دو نسخۀ پایدار و پیش انتشار (نسخ@ بتا، نامزدهای انتشار) Docker است. از این اسکریپت برای دسترسی زودهنگام به نسخههای جدید و ارزیابی آنها در یک محیط آزمایشی قبل از انتشار به عنوان پایدار استفاده کنید.
- برای نصب آخرین نسخۀ Docker روی لینوکس از کانال آزمایشی، مراحل زیر را پیش ببرید:
curl -fsSL https://test.docker.com -o test-docker.sh
sudo sh test-docker.sh
آپگرید داکر بعد از استفاده از روش convenience script:
اگر Docker را با استفاده از convenience script نصب کردهاید، باید Docker را مستقیماً با استفاده از package manager خود ارتقا دهید. هیچ مزیتی برای اجرای مجدد convenience script وجود ندارد. اگر بخواهد مخازنی را که از قبل در ماشین هاست وجود دارد دوباره نصب کند، اجرای مجدد آن میتواند مشکلاتی را ایجاد کند.
حذف Docker Engine
بستههای Docker Engine، CLI، containerd و Docker Compose را حذف کنید:
sudo apt-get purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras
ایمیجها، کانتینرها، حجمها یا فایلهای پیکربندی سفارشی روی هاست، بهطور خودکار حذف نمیشوند. برای حذف همۀ ایمیجها، کانتینرها و حجمها:
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
فهرست منبع (source list) و حلقه کلید (keyrings) را حذف کنید:
sudo rm /etc/apt/sources.list.d/docker.list
sudo rm /etc/apt/keyrings/docker.asc
شما باید هر فایل پیکربندی ویرایش شده را به صورت دستی حذف کنید.
برای اجرای مراحل بعدی به بخش مراحل پس از نصب در لینوکس بروید.
نصب Docker Engine برروی Debian:
برای شروع کار با Docker Engine در Debian، مطمئن شوید که پیش نیازها را دارا هستید و سپس مراحل نصب را دنبال کنید.
موارد پیشنیاز:
اگر از ufw یا fairewalld برای مدیریت تنظیمات فایروال استفاده میکنید، توجه داشته باشید هنگامی که پورتهای کانتینر را با استفاده از Docker در معرض دید قرار میدهید، این پورتها قوانین فایروال شما را دور می زنند. برای اطلاعات بیشتر به Docker و ufw مراجعه کنید. Docker تنها با iptables-nft و iptables-legacy سازگار است. قوانین فایروال ایجاد شده با nft در سیستمی که Docker نصب شده است پشتیبانی نمیشود. اطمینان حاصل کنید که مجموعه قوانین فایروال که استفاده میکنید با iptables یا ip6tables ایجاد میشوند و آنها را به زنجیرۀ DOCKER-USER اضافه میکنید، به فیلتر کردن بستهها و فایروالها مراجعه کنید.
عوامل مورد نیاز برای سیستمعامل:
برای نصب Docker Engine، به نسخۀ 64 بیتی یکی از این نسخههای Debian نیاز دارید:
- Debian Bookworm 12 (stable)
- Debian Bullseye 11 (oldstable)
Docker Engine برای Debian با معماریهای x86_64 (یا amd64)، armhf، arm64 و ppc64le (ppc64el) سازگار است.
نسخههای قدیمی را حذف کنید:
پیش از اینکه Docker Engine را نصب کنید، باید پکیجهای متناقض را حذف کنید. توزیع لینوکس شما ممکن است پکیجهای Docker غیررسمی ارائه کند که ممکن است با پکیجهای رسمی ارائهشده توسط Docker مغایرت داشته باشد. قبل از نصب نسخۀ رسمی Docker Engine باید این پکیجها را حذف کنید.
پکیجهای غیر رسمی که باید در ددست حذف قرار گیرند عبارتند از:
- docker.io
- docker-compose
- docker-doc
- podman-docker
علاوهبراین، Docker Engine به کانتینر و runc وابسته است. Docker Engine این وابستگیها را به صورت یک پکیج بستهبندی میکند:
- containerd.io. اگر قبلاً Containerd یا runc را نصب کردهاید، باید اقدام به حذف آنها کنید تا با نسخههای همراه Docker Engine تداخل نداشته باشند.
دستور زیر را برای حذف تمام پکیجهای اضافی اجرا کنید:
for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove $pkg; done
دستور apt-get به شما گزارش میدهد که اطمینان حاصل کنید تا هیچگونه از پکیجهای گفته شده بر روی سیستم شما نباشد. در نظر داشته باشید که ایمیجها، کانتینرها، حجمها و شبکههای ذخیره شده در /var/lib/docker/ به طور خودکار، هنگام حذف Docker حذف نمیشوند. اگر میخواهید با یک نصب از پایه شروع کنید و ترجیح میدهید تمام دادههای موجود را پاک کنید، بخش Uninstall Docker Engine را بخوانید.
انواع روشهای نصب:
بسته به نیاز خود میتوانید Docker Engine را به روشهای مختلفی نصب کنید:
- Docker Engine در لینوکس از Docker Desktop پشتیبانی میکند. این راحتترین و سریعترین راه برای شروع است.
- Docker Engine را از مخزن (Repository) Docker's apt تنظیم و نصب کنید.
- آن را به صورت دستی نصب کنید و آپگریدها را به صورت دستی مدیریت کنید.
- میتوانید از یک convenience script استفاده کنید. اما در نظر داشته باشید که فقط برای محیطهای تست و توسعه توصیه میشود.
نصب داکر با استفاده از apt repository:
پیش از آنکه Docker Engine را برای برروی یک ماشین هسات جدید نصب کنید، باید مخزن Docker apt را راهاندازی کنید. سپس میتوانید Docker را از مخزن نصب کنید.
راهاندازی مخزن Docker apt:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL <nowiki>https://download.docker.com/linux/debian/gpg</nowiki> -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
Repository خود را به Apt اضافه کنید:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] <nowiki>https://download.docker.com/linux/debian</nowiki> \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
اگر از یک توزیع مشتق شده مانند Kali Linux استفاده می کنید، ممکن است لازم باشد بخشی از این دستور را جایگزین کنید که انتظار میرود کد نسخه را چاپ کند:
(. /etc/os-release && echo "$VERSION_CODENAME")
این قسمت را با نام رمز نسخۀ مربوطه Debian، مانند bookworm جایگزین کنید. برای نصب آخرین ورژن داکر، مراحل زیر را پیش ببرید:
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
با اجرای تصویر hello-world اطمینان حاصل کنید که نصب با موفقیت انجام شده است:
sudo docker run hello-world
این دستور یک ایمیج آزمایشی را دانلود کرده و در یک کانتینر اجرا میکند. هنگامی که کانتینر اجرا شود، یک پیام تأیید چاپ کرده و خارج میشود. اکنون Docker Engine را با موفقیت نصب و راهاندازی کردهاید.
راهنمایی
اگر در هنگام اجرای داکر بدون دسترسی root خطا دریافت میکنید:
در این صورت گروه کاربری داکر (docker user group) وجود دارد اما هیچ کاربری ندارد، به همین دلیل است که برای اجرای دستورات داکر باید از sudo استفاده کنید. در postinstall لینوکس ادامه دهید تا به کاربران غیرمجاز اجازه دهید دستورات Docker و سایر مراحل پیکربندی اختیاری را اجرا کنند.
آپگرید کردن Docker Engine:
برای آپگرید Docker Engine، فایلهای پکیج جدیدتر را دانلود کرده و با توجه به فایلهای جدید، مراحل نصب را تکرار کنید.
نصب داکر با استفاده از پکیج:
اگر نمیتوانید از مخزن Docker's apt برای نصب Docker Engine استفاده کنید، میتوانید فایل deb را برای نسخۀ خود دانلود کرده و به صورت دستی نصب کنید. هر بار که میخواهید Docker Engine را آپگرید کنید، باید یک فایل جدید دانلود کنید:
- به آدرس https://download.docker.com/linux/debian/dists/ بروید.
- نسخه Debian خود را در لیست انتخاب کنید.
- به بخش pool/stable/ بروید و معماری قابل اجرا (amd64، armhf، arm64، یا s390x) را انتخاب کنید.
- فایلهای deb زیر را برای پکیجهای Docker Engine، CLI، containerd و Docker Compose دانلود کنید:
containerd.io_<version>_<arch>.deb
docker-ce_<version>_<arch>.deb
docker-ce-cli_<version>_<arch>.deb
docker-buildx-plugin_<version>_<arch>.deb
docker-compose-plugin_<version>_<arch>.deb
پکیجهای .deb را نصب کنید. مسیرهای مثال زیر را به جایی که پکیجهای Docker را دانلود کردهاید اضافه کنید:
sudo dpkg -i ./containerd.io_<version>_<arch>.deb \
./docker-ce_<version>_<arch>.deb \
./docker-ce-cli_<version>_<arch>.deb \
./docker-buildx-plugin_<version>_<arch>.deb \
./docker-compose-plugin_<version>_<arch>.deb
بعد از آن Docker Daemon به صورت خودکار شروع به کار خواهد کرد. سپس با اجرای تصویر hello-world اطمینان حاصل کنید که نصب با موفقیت انجام شده است:
sudo service docker start
sudo docker run hello-world
این دستور یک ایمیج آزمایشی را دانلود کرده و در یک کانتینر اجرا میکند. هنگامی که کانتینر اجرا میشود، یک پیام تأیید چاپ کرده و خارج میشود. اکنون Docker Engine را با موفقیت نصب و راهاندازی کردهاید. راهنمایی
اگر در هنگام اجرا داکر بدون دسترسی root خطا دریافت میکنید:
در این صورت گروه کاربری داکر (docker user group) وجود دارد اما هیچ کاربری ندارد، به همین دلیل است که برای اجرای دستورات داکر باید از sudo استفاده کنید. به postinstall لینوکس ادامه دهید تا به کاربران غیرمجاز اجازه دهید دستورات Docker و سایر مراحل پیکربندی اختیاری را اجرا کنند.
نصب داکر با استفاده از convenience script:
Docker یک convenience script در https://get.docker.com/ برای نصب Docker در محیطهای Development به صورت غیر تعاملی ارائه میدهد. convenience script برای محیطهای Production توصیه نمیشود، اما برای ایجاد یک اسکریپت تدارکاتی متناسب با نیازهای شما مفید است. همچنین برای آشنایی با نصب به طریق استفاده از مخزن پکیج، به نصب با استفاده از مراحل مخزن (Repository) مراجعه کنید. همچنین در نظر داشته باشید کد منبع این اسکریپت متن باز است و میتوانید آن را در مخزن docker-install در GitHub پیدا کنید.
همیشه اسکریپتهای دانلود شده از اینترنت را قبل از اجرا بررسی کنید. قبل از نصب، خود را با خطرات و محدودیتهای احتمالی convenience script آشنا کنید:
- اسکریپت برای اجرا به دسترسی root یا sudo نیاز دارد.
- اسکریپت سعی میکند توزیع و نسخۀ لینوکس شما را شناسایی کند و سیستم مدیریت پکیج را برای شما پیکربندی کند.
- اسکریپت به شما اجازه نمیدهد که اکثر پارامترهای نصب را سفارشی کنید.
- اسکریپت وابستگیها و توصیهها را بدون درخواست تایید نصب میکند. این ممکن است بسته به پیکربندی فعلی دستگاه هاست شما، تعداد زیادی بسته نصب کند.
- به طور پیش فرض، اسکریپت آخرین نسخۀ پایدار Docker، Containerd و Runc را نصب میکند. هنگام استفاده از این اسکریپت برای تهیۀ یک ماشین، ممکن است منجر به آپگرید نسخۀ اصلی غیرمنتظره Docker شود. همیشه قبل از استقرار در سیستمهای Production خود، آپگریدها را در یک محیط آزمایشی امتحان کنید.
- این اسکریپت برای آپگرید نصب Docker موجود طراحی نشده است. هنگام استفاده از اسکریپت برای آپگرید یک نصب موجود، ممکن است وابستگیها به نسخۀ مورد نظر آپگرید نشوند و در نتیجه نسخههای قدیمی ایجاد شوند.
راهنمایی
اسکریپت را با گزینه --dry-run اجرا کنید تا بدانید اسکریپت چه مراحلی را هنگام فراخوانی اجرا خواهد کرد:
curl -fsSL https://get.docker.com -o get-docker.sh
$ sudo sh ./get-docker.sh --dry-run
این مثال اسکریپت را از https://get.docker.com دانلود کرده و آن را برای نصب آخرین نسخۀ پایدار Docker در لینوکس اجرا میکند:
curl -fsSL https://get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh
Executing docker install script, commit: 7cae5f8b0decc17d6571f9f52eb840fbc13b2737
<...>
در حال حاضر Docker Engine را با موفقیت نصب و راهاندازی کردهاید. سرویس docker به طور خودکار در توزیعهای مبتنی بر Debian شروع میشود. در توزیعهای مبتنی بر RPM، مانند CentOS، Fedora، RHEL یا SLES، باید آن را به صورت دستی با استفاده از systemctl یا فرمان سرویس مناسب راهاندازی کنید. همانطور که پیام نشان میدهد، کاربران غیر روت نمیتوانند دستورات Docker را به طور پیشفرض اجرا کنند.
نصب نسخههای پیش از انتشار
Docker همچنین یک convenience script را در https://test.docker.com برای نصب نسخههای اولیۀ Docker در لینوکس ارائه میکند. این اسکریپت برابر با اسکریپت get.docker.com است، اما Package Manager شما را برای استفاده از کانال آزمایشی مخزن پکیج Docker پیکربندی میکند. کانال آزمایشی شامل هر دو نسخۀ پایدار و پیش انتشار (نسخۀ بتا، نامزدهای انتشار) Docker است. از این اسکریپت برای دسترسی زودهنگام به نسخههای جدید و ارزیابی آنها در یک محیط آزمایشی قبل از انتشار به عنوان پایدار استفاده کنید.
- برای نصب آخرین نسخۀ Docker روی لینوکس از کانال آزمایشی، مراحل زیر را پیش ببرید:
curl -fsSL https://test.docker.com -o test-docker.sh
sudo sh test-docker.sh
آپگرید داکر بعد از استفاده از روش convenience script:
اگر Docker را با استفاده از convenience script نصب کردهاید، باید Docker را مستقیماً با استفاده از package manager خود ارتقا دهید. هیچ مزیتی برای اجرای مجدد convenience script وجود ندارد. اگر بخواهد مخازنی را که از قبل در ماشین هاست وجود دارد دوباره نصب کند، اجرای مجدد آن میتواند مشکلاتی را ایجاد کند.
حذف Docker Engine
بستههای Docker Engine، CLI، containerd و Docker Compose را حذف کنید:
sudo apt-get purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras
ایمیجها، کانتینرها، حجمها یا فایلهای پیکربندی سفارشی روی هاست، بهطور خودکار حذف نمیشوند. برای حذف همۀ ایمیجها، کانتینرها و حجمها:
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
فهرست منبع (source list) و حلقه کلید (keyrings) را حذف کنید:
sudo rm /etc/apt/sources.list.d/docker.list
sudo rm /etc/apt/keyrings/docker.asc
شما باید هر فایل پیکربندی ویرایش شده را به صورت دستی حذف کنید.
برای اجرای مراحل بعدی به بخش مراحل پس از نصب در لینوکس بروید.