آموزش نصب Docker در Linux Mint به‌صورت گام‌به‌گام

آموزش نصب Docker در Linux Mint به‌صورت گام‌به‌گام

Docker یکی از محبوب‌ترین ابزارها برای ساخت، اجرا و مدیریت برنامه‌ها در محیط‌های ایزوله است. با استفاده از Docker می‌توان نرم‌افزارها و وابستگی‌های موردنیاز آن‌ها را در قالب کانتینر اجرا کرد؛ بدون اینکه تنظیمات برنامه با سایر بخش‌های سیستم تداخل داشته باشد. این ویژگی باعث شده است Docker میان توسعه‌دهندگان، مدیران سرور و تیم‌های DevOps کاربرد گسترده‌ای داشته باشد.

Linux Mint نیز به دلیل رابط کاربری ساده، پایداری مناسب و مبتنی بودن بر Ubuntu، یکی از توزیع‌های محبوب لینوکس محسوب می‌شود. نصب Docker روی Linux Mint فرایند پیچیده‌ای ندارد؛ اما برای جلوگیری از خطاهای احتمالی، باید مخزن رسمی Docker به‌درستی به سیستم اضافه شود و مراحل نصب با ترتیب مناسب انجام گیرد.

در این آموزش از وب‌سایت VPS Market، نحوه نصب Docker در Linux Mint را به‌صورت گام‌به‌گام بررسی می‌کنیم. همچنین با روش تست عملکرد Docker، نصب Docker Compose، اجرای دستورات کاربردی، رفع مشکلات رایج و نحوه به‌روزرسانی یا حذف Docker آشنا خواهید شد.

درصورتی‌که قصد دارید Docker را برای میزبانی دائمی برنامه‌ها، اجرای سرویس‌های تحت وب یا راه‌اندازی پروژه‌های چندکانتینری استفاده کنید، یک سرور مجازی لینوکس با دسترسی روت می‌تواند محیط مناسبی برای اجرای این سرویس‌ها در اختیار شما قرار دهد.

Docker چیست؟

Docker چیست؟

Docker یک پلتفرم متن‌باز برای ساخت، اجرا و مدیریت برنامه‌ها در محیط‌های ایزوله‌ای به نام کانتینر است. هر کانتینر شامل برنامه، کتابخانه‌ها، تنظیمات و وابستگی‌های موردنیاز آن می‌شود؛ بنابراین نرم‌افزار می‌تواند در سیستم‌های مختلف با شرایطی یکسان اجرا شود.

کانتینرهای Docker برخلاف ماشین‌های مجازی، سیستم‌عامل جداگانه‌ای اجرا نمی‌کنند و از هسته سیستم میزبان استفاده می‌کنند. به همین دلیل، حجم کمتری دارند، سریع‌تر اجرا می‌شوند و منابع کمتری مصرف می‌کنند. این ویژگی Docker را به گزینه‌ای مناسب برای توسعه نرم‌افزار، آزمایش برنامه‌ها، راه‌اندازی سرویس‌های مختلف و مدیریت سرورها تبدیل کرده است.

برای مثال، با استفاده از Docker می‌توانید سرویس‌هایی مانند Nginx، MySQL، Redis یا یک اپلیکیشن تحت وب را بدون نصب و پیکربندی مستقیم روی سیستم اجرا کنید. همچنین در صورت بروز مشکل، می‌توان کانتینر را به‌سادگی حذف و نمونه جدیدی از آن ایجاد کرد.

مهم‌ترین مزایای Docker عبارت‌اند از اجرای یکسان برنامه‌ها در محیط‌های مختلف، نصب سریع سرویس‌ها، کاهش تداخل میان نرم‌افزارها، مدیریت آسان وابستگی‌ها و استفاده بهینه‌تر از منابع سیستم. به همین دلیل، Docker امروزه یکی از ابزارهای اصلی در حوزه توسعه نرم‌افزار و DevOps محسوب می‌شود.

پیش‌نیازهای نصب Docker در Linux Mint

پیش از شروع نصب Docker، باید از سازگاری سیستم و فراهم بودن ابزارهای موردنیاز مطمئن شوید. بررسی این موارد احتمال بروز خطا هنگام اضافه کردن مخزن رسمی یا نصب بسته‌های Docker را کاهش می‌دهد.

نخست باید از نسخه ۶۴ بیتی Linux Mint استفاده کنید. برای بررسی معماری سیستم، دستور زیر را در ترمینال اجرا کنید:

uname -m

 

اگر در خروجی عبارت x86_64 یا aarch64 نمایش داده شود، سیستم شما از معماری ۶۴ بیتی استفاده می‌کند. بسته‌های رسمی Docker Engine برای چند معماری، از جمله amd64 و arm64، ارائه می‌شوند.

همچنین لازم است نسخه Linux Mint شما بر پایه یکی از نسخه‌های پشتیبانی‌شده Ubuntu باشد. برای مشاهده اطلاعات توزیع و نسخه سیستم می‌توانید از دستور زیر استفاده کنید:

cat /etc/os-release

نکته مهم این است که Docker به‌صورت رسمی نصب Docker Engine روی توزیع‌های مشتق‌شده از Ubuntu مانند Linux Mint را تضمین نمی‌کند؛ بااین‌حال، به دلیل ساختار مبتنی بر Ubuntu، نصب آن با استفاده از مخزن رسمی Ubuntu در بیشتر نسخه‌های جدید Linux Mint امکان‌پذیر است.

سایر پیش‌نیازهای لازم برای ادامه آموزش عبارت‌اند از:

  • دسترسی به یک حساب کاربری دارای مجوز sudo
  • اتصال پایدار به اینترنت برای دریافت بسته‌ها و ایمیج‌های Docker
  • فضای ذخیره‌سازی کافی برای نگهداری ایمیج‌ها، کانتینرها و داده‌های آن‌ها
  • به‌روز بودن فهرست بسته‌های سیستم
  • نداشتن بسته‌های قدیمی یا ناسازگار Docker روی سیستم

پیش از نصب بهتر است فهرست بسته‌های Linux Mint را با دستور زیر به‌روزرسانی کنید:

sudo apt update

اگر قبلاً نسخه‌ای از Docker را از مخزن پیش‌فرض Linux Mint یا Ubuntu نصب کرده‌اید، ممکن است لازم باشد بسته‌هایی مانند docker.io، نسخه‌های قدیمی docker-compose یا سایر بسته‌های ناسازگار را حذف کنید. این کار از تداخل آن‌ها با نسخه رسمی Docker Engine جلوگیری می‌کند.

مراحل نصب Docker در Linux Mint

مراحل نصب Docker در Linux Mint

بهترین روش نصب Docker در Linux Mint، استفاده از مخزن رسمی Docker است. با این روش، نسخه پایدار Docker Engine نصب می‌شود و در آینده نیز می‌توانید آن را از طریق مدیر بسته APT به‌روزرسانی کنید.

توجه داشته باشید که Linux Mint یکی از توزیع‌های مبتنی بر Ubuntu است و Docker به‌صورت رسمی پشتیبانی از توزیع‌های مشتق‌شده مانند Mint را تضمین نمی‌کند؛ بااین‌حال، می‌توان با انتخاب مخزن نسخه پایه Ubuntu، Docker را روی بیشتر نسخه‌های جدید Linux Mint نصب کرد.

مرحله اول: حذف نسخه‌های قدیمی و ناسازگار Docker

اگر قبلاً Docker یا بسته‌های مشابه آن را از مخازن پیش‌فرض سیستم نصب کرده‌اید، ابتدا بسته‌های ناسازگار را حذف کنید:

sudo apt remove $(dpkg --get-selections docker.io docker-compose docker-compose-v2 docker-doc docker-buildx podman-docker containerd runc | cut -f1)

ممکن است ترمینال اعلام کند که بعضی از این بسته‌ها روی سیستم نصب نیستند. در این صورت، پیام نمایش‌داده‌شده طبیعی است و می‌توانید مراحل بعدی را ادامه دهید.

اجرای این دستور، ایمیج‌ها، کانتینرها و Volumeهای قبلی را به‌صورت خودکار حذف نمی‌کند.

مرحله دوم: به‌روزرسانی فهرست بسته‌ها

برای دریافت آخرین اطلاعات مخازن Linux Mint، دستور زیر را اجرا کنید:

sudo apt update

در صورت نیاز می‌توانید بسته‌های نصب‌شده روی سیستم را نیز به‌روزرسانی کنید:

sudo apt upgrade -y

مرحله سوم: نصب ابزارهای موردنیاز

برای دریافت کلید امنیتی و اضافه کردن مخزن رسمی Docker، بسته‌های ca-certificates و curl را نصب کنید:

sudo apt install ca-certificates curl -y

بسته ca-certificates امکان برقراری ارتباط امن HTTPS را فراهم می‌کند و ابزار curl برای دریافت کلید رسمی Docker مورد استفاده قرار می‌گیرد.

مرحله چهارم: اضافه کردن کلید GPG رسمی Docker

ابتدا پوشه مخصوص نگهداری کلیدهای مخازن را ایجاد کنید:

sudo install -m 0755 -d /etc/apt/keyrings

سپس کلید رسمی Docker را دریافت و در این پوشه ذخیره کنید:

sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc

برای اینکه مدیر بسته سیستم بتواند این کلید را بخواند، مجوز دسترسی آن را تنظیم کنید:

sudo chmod a+r /etc/apt/keyrings/docker.asc

این کلید به سیستم اجازه می‌دهد اصالت بسته‌های دریافت‌شده از مخزن Docker را بررسی کند.

مرحله پنجم: اضافه کردن مخزن رسمی Docker

اکنون با اجرای دستور زیر، مخزن رسمی Docker را به فهرست منابع APT اضافه کنید:

sudo tee /etc/apt/sources.list.d/docker.sources <<EOF

Types: deb

URIs: https://download.docker.com/linux/ubuntu

Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")

Components: stable

Architectures: $(dpkg --print-architecture)

Signed-By: /etc/apt/keyrings/docker.asc

EOF

در این دستور، مقدار UBUNTU_CODENAME برای شناسایی نسخه Ubuntu پایه Linux Mint استفاده می‌شود. این موضوع اهمیت زیادی دارد؛ زیرا نام نسخه Linux Mint با نام نسخه Ubuntu پایه آن متفاوت است.

بعد از اضافه شدن مخزن، فهرست بسته‌های سیستم را دوباره به‌روزرسانی کنید:

sudo apt update

اگر مخزن بدون خطا به‌روزرسانی شود، سیستم برای نصب Docker Engine آماده است. روش فوق مطابق ساختار فعلی مخزن رسمی Docker برای Ubuntu است.

مرحله ششم: نصب Docker Engine

برای نصب Docker Engine، رابط خط فرمان Docker، سرویس containerd و افزونه Buildx، دستور زیر را اجرا کنید:

sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin -y

بسته‌های نصب‌شده شامل اجزای زیر هستند:

  • docker-ce: هسته اصلی Docker Engine
  • docker-ce-cli: ابزار خط فرمان Docker
  • containerd.io: سرویس مدیریت چرخه عمر کانتینرها
  • docker-buildx-plugin: افزونه پیشرفته ساخت Docker Image

نصب Docker Compose را در بخش جداگانه‌ای از این آموزش بررسی خواهیم کرد.

مرحله هفتم: راه‌اندازی سرویس Docker

در سیستم‌های مبتنی بر Debian و Ubuntu، سرویس Docker معمولاً پس از نصب به‌صورت خودکار اجرا می‌شود. برای اطمینان از فعال بودن سرویس و اجرای خودکار آن هنگام روشن شدن سیستم، دستور زیر را وارد کنید:

sudo systemctl enable --now docker

برای مشاهده وضعیت سرویس Docker نیز می‌توانید از دستور زیر استفاده کنید:

sudo systemctl status docker

اگر عبارت active (running) در خروجی نمایش داده شود، سرویس Docker با موفقیت نصب و اجرا شده است. در بخش بعدی، صحت عملکرد Docker را با اجرای یک کانتینر آزمایشی بررسی می‌کنیم.

بررسی و تست عملکرد Docker

پس از پایان مراحل نصب، باید مطمئن شوید که سرویس Docker به‌درستی اجرا می‌شود و امکان دریافت ایمیج و راه‌اندازی کانتینر وجود دارد. برای این کار، ابتدا وضعیت سرویس Docker را با دستور زیر بررسی کنید:

sudo systemctl status docker

اگر عبارت active (running) در خروجی نمایش داده شود، سرویس Docker فعال است. برای خروج از صفحه نمایش وضعیت نیز کلید q را فشار دهید. درصورتی‌که سرویس اجرا نشده باشد، می‌توانید آن را با دستور زیر راه‌اندازی کنید:

sudo systemctl start docker

برای فعال شدن خودکار Docker هنگام روشن شدن Linux Mint نیز دستور زیر را اجرا کنید:

sudo systemctl enable docker

در توزیع‌های مبتنی بر Ubuntu، سرویس Docker معمولاً پس از نصب به‌صورت خودکار اجرا می‌شود؛ بااین‌حال، بررسی وضعیت آن می‌تواند از بروز مشکل در مراحل بعد جلوگیری کند.

بررسی نسخه Docker

برای مشاهده نسخه Docker نصب‌شده، دستور زیر را وارد کنید:

sudo docker version

این دستور اطلاعات مربوط به Docker Client و Docker Server را نمایش می‌دهد. مشاهده اطلاعات هر دو بخش نشان می‌دهد که ابزار خط فرمان Docker می‌تواند با سرویس Docker ارتباط برقرار کند.

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

sudo docker info

دستور docker info اطلاعات کلی و سیستمی مربوط به نصب Docker و وضعیت Docker Daemon را نمایش می‌دهد.

اجرای کانتینر آزمایشی Hello World

مطمئن‌ترین روش برای آزمایش نصب Docker، اجرای ایمیج رسمی hello-world است. دستور زیر را در ترمینال وارد کنید:

sudo docker run hello-world

با اجرای این دستور، Docker ابتدا بررسی می‌کند که ایمیج hello-world روی سیستم وجود دارد یا خیر. اگر ایمیج موجود نباشد، آن را دریافت کرده و سپس یک کانتینر آزمایشی ایجاد می‌کند. این کانتینر پس از نمایش پیام موفقیت، به‌صورت خودکار متوقف می‌شود.

اگر پیامی شامل عبارت زیر مشاهده کردید، Docker با موفقیت نصب شده و می‌تواند کانتینرها را اجرا کند:

Hello from Docker!

اجرای موفقیت‌آمیز این کانتینر نشان می‌دهد که Docker توانسته است به مخزن ایمیج‌ها متصل شود، ایمیج موردنیاز را دریافت کند و یک کانتینر جدید بسازد و اجرا کند. این روش در مستندات رسمی Docker برای تأیید صحت نصب Docker Engine پیشنهاد شده است.

مشاهده کانتینرهای Docker

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

sudo docker ps

کانتینر hello-world در این فهرست نمایش داده نمی‌شود؛ زیرا پس از چاپ پیام آزمایشی متوقف شده است. برای مشاهده تمام کانتینرها، از جمله کانتینرهای متوقف‌شده، دستور زیر را اجرا کنید:

sudo docker ps -a

در خروجی این دستور باید کانتینر ساخته‌شده از ایمیج hello-world را مشاهده کنید. وضعیت آن معمولاً به‌صورت Exited نمایش داده می‌شود که برای این کانتینر کاملاً طبیعی است.

اجرای یک کانتینر فعال برای تست بیشتر

برای انجام یک آزمایش کامل‌تر، می‌توانید یک وب‌سرور Nginx را داخل کانتینر اجرا کنید:

sudo docker run -d --name docker-test -p 8080:80 nginx

در این دستور:

  • گزینه -d کانتینر را در پس‌زمینه اجرا می‌کند.
  • گزینه –name نام docker-test را برای کانتینر در نظر می‌گیرد.
  • گزینه -p 8080:80 پورت 8080 سیستم را به پورت 80 کانتینر متصل می‌کند.
  • عبارت nginx نام ایمیجی است که برای ساخت کانتینر استفاده می‌شود.

پس از اجرای دستور، مرورگر را باز کرده و آدرس زیر را وارد کنید:

http://localhost:8080

همچنین می‌توانید از طریق ترمینال، پاسخ وب‌سرور را بررسی کنید:

curl http://localhost:8080

اگر صفحه پیش‌فرض Nginx یا کد HTML آن نمایش داده شود، شبکه Docker، دریافت ایمیج و اجرای کانتینر به‌درستی کار می‌کنند. دستور docker run یک کانتینر را با فایل‌سیستم، شبکه و فرایندهای ایزوله‌شده اجرا می‌کند.

پس از پایان آزمایش، کانتینر Nginx را متوقف و حذف کنید:

sudo docker stop docker-test

sudo docker rm docker-test

برای حذف ایمیج آزمایشی Nginx نیز می‌توانید دستور زیر را اجرا کنید:

sudo docker image rm nginx

اگر تمام آزمایش‌های این بخش بدون خطا انجام شوند، Docker Engine روی Linux Mint به‌درستی نصب شده و برای اجرای کانتینرهای مختلف آماده است.

نصب Docker Compose در Linux Mint

نصب Docker Compose در Linux Mint

Docker Compose ابزاری برای تعریف و مدیریت برنامه‌های چندکانتینری است. با استفاده از این ابزار می‌توانید سرویس‌ها، شبکه‌ها، Volumeها و تنظیمات موردنیاز یک پروژه را داخل یک فایل YAML تعریف کرده و تمام اجزای پروژه را با یک دستور اجرا یا متوقف کنید.

در نسخه‌های جدید، Docker Compose به‌صورت یک افزونه برای Docker CLI ارائه می‌شود. به همین دلیل، دستورهای آن به شکل docker compose و با فاصله نوشته می‌شوند. نسخه مستقل قدیمی که با دستور docker-compose اجرا می‌شود، فقط برای سازگاری با پروژه‌های قدیمی در دسترس است و استفاده از آن توصیه نمی‌شود.

نصب افزونه Docker Compose

اگر در مراحل قبل مخزن رسمی Docker را به Linux Mint اضافه کرده‌اید، ابتدا فهرست بسته‌ها را به‌روزرسانی کنید:

sudo apt update

سپس افزونه رسمی Docker Compose را با دستور زیر نصب کنید:

sudo apt install docker-compose-plugin -y

این بسته Compose را به‌عنوان یکی از افزونه‌های Docker CLI روی سیستم نصب می‌کند. روش نصب از طریق مخزن رسمی، به‌روزرسانی Compose را نیز ساده‌تر می‌کند و در مستندات Docker برای توزیع‌های مبتنی بر Ubuntu و Debian پیشنهاد شده است.

بررسی نسخه Docker Compose

پس از پایان نصب، برای اطمینان از فعال بودن Docker Compose دستور زیر را اجرا کنید:

docker compose version

در صورت نصب موفقیت‌آمیز، شماره نسخه Compose در خروجی نمایش داده می‌شود. خروجی این دستور ممکن است مشابه نمونه زیر باشد:

Docker Compose version vX.X.X

شماره نسخه نمایش‌داده‌شده ممکن است با توجه به زمان نصب و نسخه موجود در مخزن Docker متفاوت باشد.

آزمایش Docker Compose

برای آزمایش عملکرد Compose، ابتدا یک پوشه جدید برای پروژه آزمایشی ایجاد کرده و وارد آن شوید:

mkdir docker-compose-test

cd docker-compose-test

سپس فایل پیکربندی Compose را ایجاد کنید:

nano compose.yaml

محتوای زیر را داخل فایل قرار دهید:

services:

web:

image: nginx:latest

container_name: compose-test

ports:

- "8080:80"

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

sudo docker compose up -d

دستور docker compose up سرویس‌های مشخص‌شده در فایل Compose را ایجاد و اجرا می‌کند. گزینه -d نیز باعث می‌شود کانتینرها در پس‌زمینه فعال بمانند.

برای مشاهده وضعیت سرویس‌ها دستور زیر را اجرا کنید:

sudo docker compose ps

اگر کانتینر Nginx در وضعیت Up یا Running قرار داشته باشد، Docker Compose به‌درستی کار می‌کند. اکنون می‌توانید آدرس زیر را در مرورگر باز کنید:

http://localhost:8080

در صورت نمایش صفحه پیش‌فرض Nginx، آزمایش با موفقیت انجام شده است. اگر پورت 8080 قبلاً توسط برنامه دیگری اشغال شده باشد، می‌توانید در فایل compose.yaml عدد سمت چپ را به پورتی مانند 8081 تغییر دهید.

متوقف کردن پروژه آزمایشی

پس از پایان آزمایش، برای متوقف کردن و حذف کانتینر و شبکه ساخته‌شده توسط Compose دستور زیر را اجرا کنید:

sudo docker compose down

این دستور منابع ایجادشده برای پروژه را متوقف و حذف می‌کند؛ اما ایمیج دانلودشده را از سیستم پاک نمی‌کند.

برای حذف ایمیج Nginx نیز می‌توانید دستور زیر را اجرا کنید:

sudo docker image rm nginx:latest

اجرای Docker Compose بدون sudo

اگر حساب کاربری خود را به گروه docker اضافه کرده باشید، نیازی به استفاده از sudo قبل از دستورهای Compose نخواهید داشت. در این حالت، دستورات را می‌توانید به شکل زیر اجرا کنید:

docker compose up -d

docker compose ps

docker compose down

در پایان، Docker Compose روی Linux Mint نصب شده و می‌توانید از فایل‌های compose.yaml برای راه‌اندازی و مدیریت پروژه‌های چندکانتینری استفاده کنید. برای مشاهده یک نمونه کاربردی از اجرای چند سرویس با Compose، می‌توانید آموزش نصب وردپرس با داکر روی اوبونتو را مطالعه کنید.

رفع مشکلات رایج نصب Docker

ممکن است هنگام نصب یا اجرای Docker در Linux Mint با خطاهایی مانند شناسایی نشدن مخزن، اجرا نشدن سرویس Docker، خطای دسترسی یا نصب نشدن Docker Compose مواجه شوید. بیشتر این مشکلات به تنظیمات مخزن، مجوزهای حساب کاربری یا وضعیت Docker Daemon مربوط هستند.

در ادامه، رایج‌ترین خطاهای Docker در Linux Mint و روش برطرف کردن آن‌ها را بررسی می‌کنیم.

خطای مخزن Docker یا Release File

یکی از خطاهای رایج در Linux Mint، استفاده از نام نسخه Mint به‌جای نسخه پایه Ubuntu در آدرس مخزن Docker است. در این شرایط ممکن است هنگام اجرای apt update با پیامی مشابه نمونه زیر مواجه شوید:

The repository does not have a Release file

برای مشاهده نام نسخه Linux Mint و نسخه پایه Ubuntu، دستور زیر را اجرا کنید:

grep -E '^(VERSION_CODENAME|UBUNTU_CODENAME)=' /etc/os-release

در Linux Mint استاندارد باید مقدار UBUNTU_CODENAME برای تنظیم مخزن Docker استفاده شود. برای اصلاح مخزن، ابتدا فایل قدیمی احتمالی را حذف کنید:

sudo rm -f /etc/apt/sources.list.d/docker.list

سپس فایل مخزن را دوباره بسازید:

sudo tee /etc/apt/sources.list.d/docker.sources > /dev/null <<EOF

Types: deb

URIs: https://download.docker.com/linux/ubuntu

Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")

Components: stable

Architectures: $(dpkg --print-architecture)

Signed-By: /etc/apt/keyrings/docker.asc

EOF

اکنون فهرست بسته‌ها را به‌روزرسانی کنید:

sudo apt update

Docker نصب روی توزیع‌های مشتق‌شده مانند Linux Mint را به‌صورت مستقیم آزمایش و تأیید نمی‌کند؛ اما برای نسخه استاندارد Linux Mint باید از دستورالعمل و مخزن Ubuntu پایه استفاده شود. در نسخه LMDE که مبتنی بر Debian است، باید مخزن و دستورالعمل نصب Debian را به کار ببرید.

خطای کلید GPG مخزن Docker

اگر کلید امنیتی Docker به‌درستی دریافت نشده باشد، ممکن است پیام‌هایی مانند NO_PUBKEY، خطای Signed-By یا معتبر نبودن امضای مخزن نمایش داده شود.

برای رفع این مشکل، کلید قبلی را حذف کنید:

sudo rm -f /etc/apt/keyrings/docker.asc

پوشه نگهداری کلیدها را دوباره ایجاد کرده و کلید رسمی Docker را دریافت کنید:

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.asc

 

سپس دستور زیر را اجرا کنید:

sudo apt update

فایل مخزن باید در بخش Signed-By دقیقاً به مسیر /etc/apt/keyrings/docker.asc اشاره کند. این ساختار مطابق روش فعلی معرفی‌شده در مستندات رسمی Docker است.

خطای Package docker-ce has no installation candidate

این خطا نشان می‌دهد که مدیر بسته APT نتوانسته است بسته docker-ce را در مخازن فعال پیدا کند. برای بررسی وضعیت بسته، دستور زیر را اجرا کنید:

apt-cache policy docker-ce

اگر مقابل قسمت Candidate عبارت (none) نمایش داده شود، معمولاً مخزن Docker به‌درستی اضافه نشده یا نسخه پایه Ubuntu اشتباه تشخیص داده شده است. پس از اصلاح فایل docker.sources، دستورات زیر را اجرا کنید:

sudo apt update

sudo apt install docker-ce docker-ce-cli containerd.io \

docker-buildx-plugin docker-compose-plugin -y

همچنین وجود بسته‌هایی مانند docker.io، docker-compose، containerd یا runc می‌تواند با بسته‌های رسمی Docker تداخل ایجاد کند. Docker توصیه می‌کند قبل از نصب نسخه رسمی، بسته‌های ناسازگار حذف شوند.

خطای Cannot connect to the Docker daemon

نمایش خطای زیر معمولاً به این معناست که سرویس Docker اجرا نشده یا Docker CLI در حال تلاش برای اتصال به یک میزبان اشتباه است:

Cannot connect to the Docker daemon

ابتدا وضعیت سرویس Docker را بررسی کنید:

sudo systemctl status docker --no-pager

اگر سرویس متوقف بود، آن را اجرا کنید:

sudo systemctl start docker

برای اجرای خودکار Docker هنگام روشن شدن سیستم نیز دستور زیر را وارد کنید:

sudo systemctl enable docker

در صورت اجرا بودن سرویس و ادامه داشتن مشکل، Docker را راه‌اندازی مجدد کنید:

sudo systemctl restart docker

سپس عملکرد آن را بررسی کنید:

sudo docker info

اگر همچنان اتصال برقرار نشد، متغیر DOCKER_HOST را بررسی کنید:

env | grep DOCKER_HOST

اگر این متغیر به‌اشتباه تنظیم شده است، آن را برای نشست فعلی حذف کنید:

unset DOCKER_HOST

ممکن است لازم باشد تعریف این متغیر را از فایل‌هایی مانند ~/.bashrc یا ~/.profile نیز حذف کنید. مستندات Docker اجرا نبودن Daemon یا تنظیم اشتباه DOCKER_HOST را از دلایل اصلی این خطا معرفی می‌کنند.

خطای Permission denied هنگام اجرای دستورات Docker

اگر دستورهای Docker با sudo اجرا می‌شوند، اما اجرای آن‌ها بدون sudo خطای دسترسی ایجاد می‌کند، حساب کاربری شما احتمالاً عضو گروه docker نیست.

ابتدا در صورت نبودن گروه Docker، آن را ایجاد کنید:

getent group docker > /dev/null || sudo groupadd docker

سپس کاربر فعلی را به این گروه اضافه کنید:

sudo usermod -aG docker "$USER"

برای اعمال تغییرات، یک بار از حساب کاربری خارج و دوباره وارد شوید. همچنین می‌توانید در نشست فعلی دستور زیر را اجرا کنید:

newgrp docker

اکنون عملکرد Docker را بدون sudo آزمایش کنید:

docker run hello-world

عضویت در گروه docker دسترسی‌هایی در سطح کاربر ریشه در اختیار حساب کاربری قرار می‌دهد؛ بنابراین تنها کاربران مورداعتماد باید به این گروه اضافه شوند.

خطای دسترسی به فایل config.json

اگر پیش از اضافه شدن کاربر به گروه Docker، دستورات را با sudo اجرا کرده باشید، ممکن است مالکیت پوشه ~/.docker به کاربر ریشه منتقل شده باشد. در این حالت خطایی مشابه نمونه زیر نمایش داده می‌شود:

WARNING: Error loading config file:

permission denied

برای اصلاح مالکیت و سطح دسترسی پوشه، دستورات زیر را اجرا کنید:

sudo chown "$USER":"$USER" "$HOME/.docker" -R

sudo chmod g+rwx "$HOME/.docker" -R

پس از اجرای این دستورات، دوباره یکی از فرمان‌های Docker را بدون sudo آزمایش کنید.

خطای docker compose: command not found

در نسخه‌های جدید، Docker Compose به‌عنوان افزونه Docker CLI نصب می‌شود و دستور صحیح آن docker compose است، نه دستور قدیمی docker-compose.

ابتدا بررسی کنید Compose نصب شده است یا خیر:

docker compose version

اگر دستور شناسایی نشد، افزونه رسمی Compose را نصب کنید:

sudo apt update

sudo apt install docker-compose-plugin -y

سپس دوباره نسخه آن را بررسی کنید:

docker compose version

نسخه مستقل docker-compose یک روش قدیمی و Legacy محسوب می‌شود. برای نصب‌های جدید بهتر است از افزونه رسمی و دستور docker compose استفاده شود.

خطای دریافت ایمیج یا مشکل DNS

اگر هنگام اجرای دستورهایی مانند docker pull با خطای Timeout، پیدا نشدن دامنه یا مشکل DNS مواجه شدید، ابتدا اتصال اینترنت سیستم را بررسی کنید:

ping -c 4 example.com

سپس دریافت یک ایمیج آزمایشی را امتحان کنید:

sudo docker pull hello-world

برای بررسی DNS نیز می‌توانید دستور زیر را اجرا کنید:

getent hosts registry-1.docker.io

اگر اینترنت سیستم فعال است اما Docker نمی‌تواند نام دامنه‌ها را پیدا کند، می‌توانید DNS مورد استفاده Docker Daemon را در فایل زیر تنظیم کنید:

sudo nano /etc/docker/daemon.json

نمونه تنظیمات:

{

"dns": ["1.1.1.1", "8.8.8.8"]

}

اگر فایل daemon.json از قبل تنظیماتی دارد، باید گزینه dns را با رعایت ساختار صحیح JSON به همان فایل اضافه کنید. سپس سرویس Docker را راه‌اندازی مجدد کنید:

sudo systemctl restart docker

در شبکه‌های سازمانی یا شبکه‌هایی که از DNS داخلی استفاده می‌کنند، باید آدرس DNS مناسب همان شبکه را وارد کنید. Docker امکان تعیین DNS اختصاصی برای Daemon و کانتینرها را از طریق فایل daemon.json فراهم می‌کند.

خطای اشغال بودن پورت

یکی دیگر از مشکلات رایج در مدیریت پورت‌ها، نمایش پیام port is already allocated هنگام اجرای کانتینر است. این خطا نشان می‌دهد پورت انتخاب‌شده روی سیستم میزبان، برای مثال پورت 8080، قبلاً توسط برنامه یا کانتینر دیگری استفاده شده است.

برای بررسی برنامه‌ای که از پورت استفاده می‌کند، دستور زیر را اجرا کنید:

sudo ss -ltnp | grep ':8080'

کانتینرهای در حال اجرا و پورت‌های آن‌ها را نیز بررسی کنید:

docker ps

می‌توانید کانتینر قبلی را متوقف کنید:

docker stop CONTAINER_NAME

راه دیگر، انتخاب یک پورت آزاد است. برای مثال به‌جای پورت 8080 از پورت 8081 استفاده کنید:

docker run -d -p 8081:80 nginx

گزینه -p پورت سیستم میزبان را به پورت داخل کانتینر متصل می‌کند و هر پورت میزبان در یک زمان تنها می‌تواند در اختیار یک فرایند یا اتصال مشخص باشد.

بررسی گزارش‌های Docker برای یافتن خطا

اگر دلیل مشکل مشخص نبود، گزارش‌های سرویس Docker معمولاً اطلاعات دقیق‌تری درباره خطا ارائه می‌دهند. برای مشاهده ۱۰۰ خط آخر سرویس Docker از دستور زیر استفاده کنید:

sudo journalctl -u docker.service --no-pager -n 100

برای مشاهده زنده گزارش‌ها نیز می‌توانید دستور زیر را اجرا کنید:

sudo journalctl -u docker.service -f

اگر مشکل مربوط به یک کانتینر مشخص است، ابتدا نام یا شناسه آن را پیدا کنید:

docker ps -a

سپس گزارش‌های کانتینر را مشاهده کنید:

docker logs CONTAINER_NAME

برای دنبال کردن لحظه‌ای خروجی کانتینر نیز گزینه -f را به کار ببرید:

docker logs -f CONTAINER_NAME

در سیستم‌های مبتنی بر systemd، دستور journalctl -u docker.service گزارش‌های Docker Daemon را نمایش می‌دهد و دستور docker logs برای مشاهده خروجی ثبت‌شده کانتینر استفاده می‌شود.

پس از رفع خطا، بهتر است دستور زیر را دوباره اجرا کنید تا از عملکرد صحیح Docker مطمئن شوید:

docker run --rm hello-world

جمع‌بندی

در این آموزش، مراحل نصب Docker در Linux Mint را از بررسی پیش‌نیازها و اضافه کردن مخزن رسمی گرفته تا نصب Docker Engine، آزمایش عملکرد آن و راه‌اندازی Docker Compose بررسی کردیم. با طی کردن این مراحل، اکنون می‌توانید کانتینرهای مختلف را روی سیستم خود اجرا کرده و سرویس‌ها و برنامه‌های چندکانتینری را مدیریت کنید.

استفاده از مخزن رسمی Docker باعث می‌شود نسخه‌ای پایدار و به‌روز از این ابزار در اختیار داشته باشید. همچنین بهتر است پس از نصب، با اجرای کانتینر hello-world و بررسی وضعیت سرویس Docker، از عملکرد صحیح آن مطمئن شوید.

در صورت بروز مشکل نیز می‌توانید تنظیمات مخزن، وضعیت Docker Daemon، مجوزهای حساب کاربری و گزارش‌های سیستم را بررسی کنید. بیشتر خطاهای رایج نصب Docker در Linux Mint با اصلاح مخزن Ubuntu پایه، فعال کردن سرویس Docker یا اضافه کردن کاربر به گروه docker برطرف می‌شوند.

در نهایت، Docker می‌تواند فرایند نصب، اجرا و مدیریت نرم‌افزارها را ساده‌تر کند و محیطی یکسان برای توسعه، آزمایش و اجرای برنامه‌ها در اختیار شما قرار دهد.

سؤالات متداول

آیا Docker روی Linux Mint نصب می‌شود؟

بله، Docker را می‌توان با استفاده از مخزن رسمی Ubuntu روی Linux Mint نصب کرد.

چگونه نصب Docker را بررسی کنیم؟

دستور زیر را اجرا کنید:

docker run hello-world

نمایش پیام Hello from Docker! یعنی نصب موفق بوده است.

آیا Docker بدون sudo اجرا می‌شود؟

بله، با افزودن کاربر به گروه docker:

sudo usermod -aG docker "$USER"

سپس یک بار از حساب کاربری خارج و دوباره وارد شوید.

تفاوت docker compose و docker-compose چیست؟

docker compose نسخه جدید و پیشنهادی است. docker-compose نسخه قدیمی این ابزار محسوب می‌شود.

چرا سرویس Docker اجرا نمی‌شود؟

ابتدا سرویس را دوباره راه‌اندازی کنید:

sudo systemctl restart docker

سپس وضعیت آن را بررسی کنید:

sudo systemctl status docker

چگونه Docker را هنگام روشن شدن سیستم اجرا کنیم؟

دستور زیر را وارد کنید:

sudo systemctl enable docker

فایل‌های Docker کجا ذخیره می‌شوند؟

داده‌های Docker معمولاً در مسیر زیر قرار دارند:

/var/lib/docker

آیا حذف Docker باعث پاک شدن کانتینرها می‌شود؟

خیر، حذف بسته‌های Docker معمولاً ایمیج‌ها، کانتینرها و Volumeها را پاک نمی‌کند.

چگونه Docker را به‌روزرسانی کنیم؟

دستورات زیر را اجرا کنید:

sudo apt update

sudo apt upgrade

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

بیست − هجده =