داکر

از فرکیان تک
نسخهٔ تاریخ ‏۱۱ دسامبر ۲۰۲۴، ساعت ۰۹:۲۶ توسط Arya hich (بحث | مشارکت‌ها)
پرش به ناوبری پرش به جستجو

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استفاده کنید.

1. نصب داکر با استفاده از 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، فایل‌های پکیج جدیدتر را دانلود کرده و با توجه به فایل‌های جدید، مراحل نصب را تکرار کنید. 2. نصب داکر با استفاده از پکیج: اگر نمی‌توانید از مخزن 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 و سایر مراحل پیکربندی اختیاری را اجرا کنند.

3. نصب داکر با استفاده از convenience script: Docker یک convenience script در https://get.docker.com/ برای نصب Docker در محیط‌های Development به صورت غیر تعاملی ارائه می‌دهد. اسکریپت راحتی برای محیط‌های 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

شما باید هر فایل پیکربندی ویرایش شده را به صورت دستی حذف کنید.

برای اجرای مراحل بعدی به بخش مراحل پس از نصب در لینوکس بروید.