برای کاربران جدید Docker ممکن است، در ابتدای کار، استفاده از docker سخت باشد؛ زیرا اغلب بلافاصله پس از نصب با خطاهایی روبرو می‌شوند. خطای "cannot connect to the Docker daemon" در Docker یکی از این خطاهاست. این خطا معمولاً هنگام اجرای دستور docker-compose build رخ می‌دهد.

در این آموزش، دلایل احتمالی خطای "cannot connect to the Docker daemon" و راه‌حل‌های آن بررسی شده است.

 

به منظور دنبال کردن این آموزش، به موارد زیر نیاز خواهید داشت.

  • دسترسی به خط فرمان یا ترمینال
  • Docker نصب شده و قابل استفاده

راه‌های مختلفی برای برطرف کردن خطای "cannot connect to the Docker daemon" وجود دارد. تنها چنانچه یک راه حل برای شما کار نکرد، به روش بعدی بروید. بنابراین، نیازی به استفاده از همه راه‌حل‌ها نیست.

 

این مطلب نیز ممکن است برای شما مفید باشد: نصب Docker در CentOS 8

 

روش 1: بررسی موتور Docker

اگر موتور docker در حال اجرا نباشد، docker-compose نمی‌تواند به آن دسترسی پیدا کند و همین باعث ایجاد خطا می‌شود. بنابراین:

1. ابتدا بررسی کنید که موتور Docker در حال اجرا است یا خیر:

sudo service docker status

 

2. اگر موتور docker در حال اجرا نیست، آن را با دستور زیر مجدداً راه‌اندازی کنید:

sudo service docker restart

3. پس از راه‌اندازی مجدد موتور Docker، دوباره دستور docker-compose build را اجرا نمایید. اگر خطا همچنان ادامه داشت، یکی از راه‌حل‌های زیر را امتحان کنید.

 

روش 2: اختصاص مالکیت به سوکت Docker Unix

خطای "cannot connect to the Docker daemon" می‌تواند، زمانی اتفاق افتد که مالکیت صحیح فایل سوکت Unix برای Docker اختصاص داده نشده باشد. بنابراین:

1. ابتدا مالکیت سوکت Docker Unix را بررسی نمایید:

sudo ls -la /var/run/docker.sock

2. در صورت لزوم، مالکیت کاربر را با دستور زیر اعطا کنید:

sudo chown [username]:docker /var/run/docker.sock

 

این مطلب نیز ممکن است برای شما مفید باشد: رفع خطای "Permission Denied" پس از نصب Docker در اوبونتو

 

روش 3: بررسی مالکیت فایل‌های استفاده شده

مسائل مربوط به مالکیت می‌تواند به حوزه فایل‌هایی که توسط Docker build شما استفاده می‌شود نیز گسترش یابد. اگر docker باید از فایلی استفاده کند که به آن دسترسی نداشته باشد، این منجر به خطای "cannot connect to the Docker daemon" می‌شود. بنابراین:

1. دستور docker build را برای هر container جداگانه اجرا نمایید. در خروجی این دستور، خطاهای احتمالی نشان داده می‌شود.

 

2. خروجی هر container را بررسی کنید، به دنبال خطای "cannot connect to the Docker daemon" بگردید. اگر مشکلی در مالکیت فایل وجود داشته باشد، گزارش خطا، فایل‌هایی را که دستور docker build نمی‌تواند به آن‌ها دسترسی داشته باشد، لیست می‌کند.

3. چندین راه برای حل مسئله مالکیت فایل‌های استفاده شده وجود دارد:

شما می‌توانید فایل‌های مورد نظر را حذف نمایید، اما این کار بر روی هرگونه build دیگر با استفاده از فایل‌های مشابه تأثیر می‌گذارد.

روش دیگر این است که فایل .dockerignore را به build فعلی خود اضافه کنید؛ بدین صورت فایل‌هایی را که build شما نمی‌تواند به آن‌ها دسترسی داشته باشد، حذف می‌نمایید.

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

sudo chown [username]:docker /your/file/location

 

روش 4: اضافه کردن کاربر خود به گروه Docker

نداشتن امتیازات مورد نیاز کاربر نیز باعث ایجاد خطا می‌شود؛ چراکه شما باید بتوانید بدون استفاده از دستور sudo به موتور Docker دسترسی داشته باشید. بنابراین:

1. ابتدا کاربر فعلی را از طریق دستور usermod به صورت زیر به گروه Docker اضافه کنید:

sudo usermod -aG docker [username]

2. برای تأیید تغییرات، از سیستم خارج شده و دوباره وارد سیستم شوید.

 

روش 5: اضافه کردن جداول محیطی در OS X

اگر Docker را در OS X اجرا می‌نمایید، ممکن است مجبور شوید متغیرهای محیطی را اضافه کنید. بنابراین:

1. ابتدا ماشین مجازی Docker را راه‌اندازی نمایید:

docker-machine start

2. متغیرهای محیطی را با استفاده از دستور زیر برای Docker دریافت کنید:

docker-machine env

3. در نهایت، متغیرهای محیطی را با دستور زیر تنظیم نمایید:

eval "$(docker-machine env default)"

 

 

 

منبع:

phoenixnap