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 میتوانید سرویسهایی مانند 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 است. با این روش، نسخه پایدار 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 ابزاری برای تعریف و مدیریت برنامههای چندکانتینری است. با استفاده از این ابزار میتوانید سرویسها، شبکهها، 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







