Compose: تعذر الاتصال بـ Docker daemon على http + unix: //var/run/docker.sock - هل يعمل؟

تم إنشاؤها على ٢٩ مارس ٢٠١٥  ·  131تعليقات  ·  مصدر: docker/compose

لقد جربت كل شيء في هذا الموضوع: https://github.com/docker/compose/issues/88

لم يحالفنا الحظ بعد.

rept<strong i="8">@temponia</strong>:~/passenger$ netstat -ant  |grep 4243
tcp        0      0 127.0.0.1:4243          0.0.0.0:*               LISTEN     
rept<strong i="9">@temponia</strong>:~/passenger$ echo $DOCKER_HOST
tcp://localhost:4243
rept<strong i="10">@temponia</strong>:~/passenger$ sudo docker-compose build db uses an image, skipping
Building web...
Couldn't connect to Docker daemon at http+unix://var/run/docker.sock - is it running?

If it's at a non-standard location, specify the URL with the DOCKER_HOST environment variable.

هذه هي النسخة:

rept<strong i="14">@temponia</strong>:~/passenger$ sudo docker version
Client version: 1.0.1
Client API version: 1.12
Go version (client): go1.2.1
Git commit (client): 990021a
Server version: 1.0.1
Server API version: 1.12
Go version (server): go1.2.1
Git commit (server): 990021a

أيه أفكار؟ حاولت أيضًا تثبيت التين الذي يعمل على الفور دون أي مشكلة ...

التعليق الأكثر فائدة

حل لي أيضا مع الأمر sudo

ال 131 كومينتر

أحصل على نفس رسالة الخطأ عند تشغيل عامل ميناء.
يتم حلها عن طريق إضافة نفسي إلى "عامل ميناء" مجموعة المستخدمين

حاول تشغيل الأمر التالي لإضافة نفسك إلى المجموعة
usermod -aG docker ${USER}

أو يمكنك تشغيل الأمر التالي لمعرفة المجموعات التي تنتمي إليها
groups $USER

يبدو أن docker-compose يتجاهل $DOCKER_HOST env var هنا ، لأنه يحاول الاتصال بالمقبس بدلاً من العنوان 127.0.0.1.

نفس المشكلة هنا

لقد واجهت نفس رسالة الخطأ الآن ، في ذلك الوقت ، تم إيقاف تشغيل WiFi للكمبيوتر المحمول بدون اتصال سلكي. أقوم بتمكين WiFi والاتصال بالشبكة اللاسلكية المنزلية ثم حل المشكلة.

يمكنك تجربة 5.0.3 (prebuild) على https://www.virtualbox.org/wiki/Testbuilds ؟ إنه حل هذه المشكلة بالنسبة لي.

واجهت هذه المشكلة باستخدام docker في جهاز mac الخاص بي ، ولكن تم حلها ، قمت بتشغيل أمر الإنشاء بدون sudo ، لذلك يبدو أنها مشكلة مستخدم ،

حل لي أيضا مع الأمر sudo

rept هل ما زلت تواجه هذه المشكلة؟ مضى الآن أكثر من عام على إصدار عامل الإرساء الذي أبلغت عنه ، وهو ، حسنًا ، ما قبل التاريخ من حيث عامل الإرساء :)

أتساءل عما إذا كان يجب إبقاء هذه المشكلة مفتوحة لأنها تجمع الآن كل أنواع الأسباب المحتملة التي لا يمكن الوصول إلى البرنامج الخفي (لا أعني هذا بطريقة سيئة ؛ شكرًا للجميع على اقتراح الحلول ، إنه موضع تقدير)

لقد أجريت تثبيتًا جديدًا على جهاز مختلف تمامًا وهو يعمل الآن. لذا فأنت تغلقه فان.

شكرًا ، rept ، ومن الجيد أن نسمع أنه تم حله!

انا حصلت

ERROR: Couldn't connect to Docker daemon at http+docker://localunixsocket - is it running?

أيضًا في كل مرة أقوم بتنشيط tty: true أو stdin_open: true في docker-compose.yml وتشغيل docker-compose up .

هل يمكن أن تكون مرتبطة؟

Docker version 1.9.1, build a34a1d5
docker-compose version 1.5.2, build 7240ff3

لقد قمت للتو بحل مشكلتي في تشغيل الأمر "docker-compose run ..." مع sudo.

واجهت هذا عند تشغيل docker compose up -d خلال فترة التشرد. تمت إضافة المستخدم vagrant إلى المجموعة docker لكن الخطأ أعلاه يظهر عند تشغيله بدون sudo . هل يعمل لاحقًا إذا قام أحدهم بتسجيل الدخول كمستخدم vagrant ولكنه فشل أثناء التزويد ، لذا فإن له علاقة بمتغيرات env؟

docker-compose version: 1.4.1

حل بسيط: sudo docker-compose up

جريت إلى نفس المشكلة مع:

[root<strong i="6">@c910f05c01bc07</strong> xcat-docker]# docker-compose version
docker-compose version 1.6.2, build 4d72027
docker-py version: 1.7.2
CPython version: 2.7.9
OpenSSL version: OpenSSL 1.0.1e 11 Feb 2013

إصدار عامل ميناء:

[root<strong i="10">@c910f05c01bc07</strong> xcat-docker]# docker version
Client:
 Version:      1.10.2
 API version:  1.22
 Go version:   go1.5.3
 Git commit:   c3959b1
 Built:        Mon Feb 22 16:16:33 2016
 OS/Arch:      linux/amd64

Server:
 Version:      1.10.2
 API version:  1.22
 Go version:   go1.5.3
 Git commit:   c3959b1
 Built:        Mon Feb 22 16:16:33 2016
 OS/Arch:      linux/amd64

هذا حل وليس حلاً ، أليس كذلك؟

ما زلت في كثير من الأحيان مع هذا

هذه ليست قضية إنشاء. إذا لم تتمكن من الاتصال بخادم عامل التحميل من خلال الإنشاء ، فهناك عدة أسباب محتملة:

  • لقد نسيت تصدير متغيرات env DOCKER_ ، والتي تتم غالبًا عن طريق تشغيل eval $(docker-machine env default)
  • هناك مشكلة في الشبكة بينك وبين مضيف عامل الإرساء البعيد (إذا كنت تعمل على مزود خدمة سحابية)
  • هناك مشكلة في تشغيل برنامج Docker daemon في Virtualbox VM
  • لا يستطيع المستخدم الوصول إلى مقبس docker daemon بسبب الأذونات (إذا كنت تعمل على مضيف Linux). الحل هو sudo أو إصلاح الأذونات.

هذه ليست مشاكل يمكن حلها عن طريق التأليف.

توجد مشكلة في tty ، والتي تم تحديدها هنا: # 3106

أستطيع أن أؤكد: هذه ليست مشكلة في إنشاء عامل ميناء.

إذا كان ذلك مفيدًا: لقد واجهت نفس المشكلة (تعذر الاتصال ...) على مضيف Ubuntu. تشغيل sudo systemctl status docker.service -l أظهر المشكلة "الحقيقية". كان الحل في حالتي هو إزالة جميع الملفات في "/ var / lib / docker / network / files /" وإعادة تشغيل خدمة docker.

مرحباdnephinmadflow، وأنا أعتقد أن هذا هو المشكلة عامل ميناء يؤلف.

نظرًا لأنه باستخدام نفس صورة عامل الإرساء وشبكة عامل الإرساء ، يمكن بدء تشغيل الحاوية بنجاح

 sudo docker run -it --privileged=true  --hostname=xcatmn --name=xcatmn --add-host="xcatmn.clusers.com xcatmn:10.5.107.101" --volume /docker/xcatdata/:/install --net=subnet1 --ip=10.5.107.101  xcat/xcat-ubuntu-x86_64

لكنه فشل في "إنشاء عامل ميناء". يعد docker-compose.yml مكافئًا لخيارات وحجج "docker run":

[root<strong i="12">@c910f05c01bc07</strong> xcat-docker]# docker-compose config
networks:
  default:
    external:
      name: subnet1
    external_name: subnet1
services:
  xcatmn:
    container_name: xcatmn
    extra_hosts:
      xcatmn.clusers.com xcatmn: 10.5.107.101
    hostname: xcatmn
    image: xcat/xcat-ubuntu-x86_64
    networks:
      default:
        ipv4_address: 10.5.107.101
    privileged: true
    stdin_open: true
    tty: true
    volumes:
    - /docker/xcatdata:/install:rw
version: '2.0'
volumes: {}

معلومات عن عامل الإرساء وتأليف الإصدار:

[root<strong i="16">@c910f05c01bc07</strong> xcat-docker]# docker version
Client:
 Version:      1.10.2
 API version:  1.22
 Go version:   go1.5.3
 Git commit:   c3959b1
 Built:        Mon Feb 22 16:16:33 2016
 OS/Arch:      linux/amd64

Server:
 Version:      1.10.2
 API version:  1.22
 Go version:   go1.5.3
 Git commit:   c3959b1
 Built:        Mon Feb 22 16:16:33 2016
 OS/Arch:      linux/amd64
[root<strong i="17">@c910f05c01bc07</strong> xcat-docker]# docker-compose version
docker-compose version 1.7.0dev, build 99d68be
docker-py version: 1.8.0-dev
CPython version: 2.7.9
OpenSSL version: OpenSSL 1.0.1e 11 Feb 2013

إذا كان بإمكانك إعادة إظهار مشكلة اتصال مع Compose وليس مع docker cli ، فيرجى فتح مشكلة جديدة. يعد تضمين جميع المعلومات التي لديك هنا أمرًا رائعًا ، وكذلك رسالة الخطأ ، ورابط للصق docker-compose --verbose up .

أحصل على هذا إذا كان أي من أسماء الحاويات الخاصة بي به غلاف جمل.

$ cat docker-compose.yml
referenceCombo:
  build: referenceCombo

$ docker-compose build
Building referenceCombo
ERROR: Couldn't connect to Docker daemon at http+docker://localunixsocket - is it running?

If it's at a non-standard location, specify the URL with the DOCKER_HOST environment variable.

قم بتغيير الاسم إلى "Referencecombo" (كلها أحرف صغيرة) ولا بأس بذلك. بالتأكيد لا تساعد رسالة الخطأ في اكتشاف هذا الخطأ :(

chriskessel أعتقد أن مشكلتك مغطاة

بعد إعادة تشغيل خدمات docker ، تعمل بالنسبة لي :(

إعادة تشغيل عامل ميناء الخدمة

كان لدي نفس الخطأ ، بعد 15 دقيقة من التصحيح. تبين أن كل ما تحتاجه هو sudo :)
تحقق من [إنشاء مجموعة Docker] هنا https://docs.docker.com/engine/installation/linux/ubuntulinux/ للتخلص من بادئة sudo.

لماذا تحتاج للتشغيل مع sudo؟

fabiopaiva بشكل افتراضي يتصل عامل

$ ls -l /var/run/docker.sock
srw-rw---- 1 root docker 0 Jun 29 23:38 /var/run/docker.sock

لذلك عليك إما أن تكون جذرًا أو عضوًا في مجموعة عامل الإرساء للاتصال بها. إذا كان عامل التحميل يستمع على مقبس tcp ، فلن يتم تطبيق الأذونات.

أحذف الملف /var/run/docker.sock
كيف يمكن التصحيح؟

pixies إعادة تشغيل يجب أن تقوم خدمة عامل

هذا هو الجواب الصحيح. في كثير من الحالات ، ستحتاج إلى تسجيل الخروج وتسجيل الدخول مرة أخرى حتى يسري التغيير. سيعمل تشغيل الأمر باستخدام sudo أيضًا ، لكن إضافة المستخدمين الضروريين إلى مجموعة عامل الإرساء يعد حلاً أفضل حتى لا تضطر إلى منح وصول sudo.

leoyuholo علق في 14 مايو 2015

يتم حلها عن طريق إضافة نفسي إلى "عامل ميناء" مجموعة المستخدمين

حاول تشغيل الأمر التالي لإضافة نفسك إلى المجموعة
usermod -aG docker ${USER}

أو يمكنك تشغيل الأمر التالي لمعرفة المجموعات التي تنتمي إليها
groups $USER

إنها تعمل حقًا في حالة إعادة تشغيل الجهاز.

alexanderadam هل وجدت أي حل؟ لدي نفس الخطأ الآن

CnytSntrk آسف ، لقد حللت المشكلة بخلاف ذلك. :غمزة:
لكن حظًا سعيدًا: four_leaf_clover: إيجاد حل!

alexanderadam شكرا: +1:

لقد قمت للتو بحل مشكلتي في تشغيل الأمر "docker-compose run ..." مع sudo.

لقد حللت مشكلة إضافة sudo

إعادة التشغيل فعلت الحيلة بالنسبة لي

واجهت أيضًا مشكلة بعد إضافة مستخدم إلى مجموعة عامل الإرساء لتجنب sudo. إعادة التشغيل يحل كل شيء! شكر

بعد إضافة المستخدم إلى مجموعة عامل الإرساء ، لا يلزم إعادة التشغيل ، فقط قم بتسجيل الخروج وتسجيل الدخول ، فهو يعمل بالنسبة لي

حاولت قبل الرحمن. لم تنجح. شكرا على كل حال

+1

لا تزال هذه مشكلة في Ubuntu 16.04 وأضف نفسي إلى مجموعة عامل الإرساء ، ثم نجح إعادة تسجيل الدخول. لا ينبغي إغلاق هذه القضية.

نظام التشغيل Ubuntu 16.04.0
https://github.com/docker/compose/issues/1214#issuecomment -102246925
العمل بشكل مثالي ولكن إعادة التشغيل من قبل

Ubuntu 16.04 لديه نفس الخطأ

الحل (من https://docs.docker.com/engine/installation/linux/debian/ ، لا يعمل فقط مع دبيان):

أضف مجموعة عامل الإرساء إذا لم تكن موجودة بالفعل.
sudo groupadd docker

أضف المستخدم المتصل "$ {USER}" إلى مجموعة عامل الإرساء.
قم بتغيير اسم المستخدم ليطابق المستخدم المفضل لديك.
قد تضطر إلى تسجيل الخروج وإعادة تسجيل الدخول مرة أخرى لـ
هذا حيز التنفيذ.
sudo gpasswd -a ${USER} docker

أعد تشغيل Docker daemon.
sudo service docker restart

mikevoets نعم أعتقد أنه ينبغي أن يحل هذه المشكلة.

حدث الشيء نفسه في تثبيت جديد وأدركت أن السبب هو أنني لم أستخدم sudo.

هل يعرف أحد كيفية تشغيله دون استخدام sudo؟

انظر ردي ماركو

2016-11-08 0:15 GMT + 01: 00 Marco Ordonez [email protected] :

هل يعرف أحد كيفية تشغيله دون استخدام sudo؟

-
أنت تتلقى هذا لأنه تم ذكرك.
قم بالرد على هذا البريد الإلكتروني مباشرة ، وقم بعرضه على GitHub
https://github.com/docker/compose/issues/1214#issuecomment -258994514 ،
أو كتم الخيط
https://github.com/notifications/unsubscribe-auth/AEN6D4Gfir0gehnbenS0IT65wLHAo2VWks5q77ERgaJpZM4D2vHs
.

@ mordonez-me ، ستساعد إضافة مجموعة عامل الإرساء.

sudo gpasswd -a ${USER} docker

بشكل عام ، لدي خطوات التثبيت التالية في Centos 7 مع مستخدم root :

# Remove SELinux for dev VMs
yum remove -y selinux*
# Docker
curl -fsSL https://get.docker.com/ | sh
systemctl enable docker
systemctl restart docker
curl -L https://github.com/docker/compose/releases/download/1.8.1/docker-compose-`uname -s`-`uname -m` \
  > /usr/bin/docker-compose
chmod +x /usr/bin/docker-compose
gpasswd -a vagrant docker

وبعد ذلك يعمل بشكل جيد مع مستخدم غير الجذر vagrant .

هذا لم ينجح إلا بعد تسجيل الدخول والخروج بعد إضافة المستخدم الخاص بي إلى مجموعة عامل الإرساء.

FWIW ، كنت بحاجة إلى إعادة تشغيل النظام قبل أن يبدأ العمل من أجلي. كان هذا على الأرجح بسبب حقيقة أن حزم kernel linux-image-extra-* قد تم تثبيتها حديثًا كما هو مطلوب بواسطة عامل التحميل على المتطلبات الأساسية حسب إصدار Ubuntu .

حاول تشغيل dockerd أو sudo dockerd إذا لزم الأمر أولاً لبدء البرنامج الخفي. إذا بدأت dockerd بـ sudo فقد ترغب في تشغيل docker-compose up مع sudo أيضًا. وإلا فلا بأس.

منذ أن استخدمت بعض الأوامر المقترحة في هذا الموضوع ، أردت مشاركة تجاربي.

لدي التكوين التالي في Vagrantfile :

config.vm.provision "docker"
config.vm.provision "shell", inline: "docker ps", privileged: false
# or
# config.vm.provision "shell", inline: "docker-compose ps", privileged: false

أحصل على المشكلة التالية:

  • عندما أحاول استخدام Docker:

    Cannot connect to the Docker daemon. Is the docker daemon running on this host?
    
  • عندما أحاول استخدام Docker Compose:

    ==> default: Couldn't connect to Docker daemon at http+docker://localunixsocket - is it running?
    ==> default: 
    ==> default: If it's at a non-standard location, specify the URL with the DOCKER_HOST environment variable.
    

بفضل هذا التعليق نجحت في العمل.

المحلول:

config.vm.provision "docker"
# The following line terminates all ssh connections. Therefore
# Vagrant will be forced to reconnect.
# That's a workaround to have the docker running with the vagrant user
config.vm.provision "shell", inline:
   "ps aux | grep 'sshd:' | awk '{print $2}' | xargs kill", privileged: true
config.vm.provision "shell", inline: "docker ps", privileged: false

هذه ليست مشكلة متعلقة بـ Docker ، لكنها مشكلة إذن مقبس لينوكس (مشكلة شائعة جدًا بين php-fpm و nginx).

1) Docker هو تطبيق عميل / خادم HTTP كلاسيكي ، سيتحدث العميل عبر مقبس أو IP إلى الخادم
2) المقبس عبارة عن ملف لينكس ، مع إذن ، ينتمي إلى مستخدم ومجموعة:

    sudo ls -alh /var/run
    ...
    srw-rw---- 1 root staff    0 Jan 22 10:09 docker.sock
    ....

3) عند تنفيذ docker ps ، يجب أن يكون لديك إذن للوصول إلى ملف docker.sock

في هذه الحالة ، ما عليك سوى إجراء sudo usermod -aG staff [ME] لإضافتك إلى المجموعة الصحيحة (عادةً ما يكون docker ) (نفس الشيء مع php-fpm ، حيث تكون المجموعة عادةً www-data).

واجهت المشكلة ، أنني استخدمت pip install docker-compose . أزلته واستخدمت sudo pip install docker-compose . الآن يعمل الأمر sudo docker-compose up .

امل ان يساعد.

عندما تواجه مشاكل في المصادقة مع تثبيت pip ، فمن الأفضل استخدام تثبيت pip [حزمة] - مستخدم بدلاً من استخدام sudo ، في بعض الحالات ، سيؤدي استخدام sudo إلى حدوث مشكلات في المصادقة أثناء تنفيذ التطبيق نفسه.

في 25 كانون الثاني (يناير) 2017 ، الساعة 5:38 مساءً ، كتب oesah [email protected] :

واجهت مشكلة ، أنني استخدمت نقطة تثبيت عامل الإرساء. لقد قمت بإلغاء تثبيته واستخدمت sudo pip install docker-compose. الآن يعمل الأمر sudo docker-compose.

امل ان يساعد.

-
أنت تتلقى هذا لأنك علقت.
قم بالرد على هذه الرسالة الإلكترونية مباشرةً ، أو قم بعرضها على GitHub https://github.com/docker/compose/issues/1214#issuecomment-275255529 ، أو كتم صوت سلسلة الرسائل https://github.com/notifications/unsubscribe-auth/AMoEJ_g9iZOd2_BQUgaqgyk2mPLIv43eks5rV884

على Fedora Linux
إضافة المستخدم الخاص بك إلى مجموعة عامل ميناء
sudo usermod -aG docker username

بعد إعادة تشغيل هذا الأمر ، لا يكفي تسجيل الخروج كما هو الحال في التوزيعات الأخرى

لا شيء أفضل من التوصية بالوثيقة الرسمية:

https://docs.docker.com/engine/installation/linux/linux-postinstall/

تحقق من هذا.

المستند الرسمي هو دائمًا المكان الأول الذي يجب أن تذهب إليه للحصول على المساعدة.

لذلك انتهى بي الأمر بإضافة المستخدم إلى مجموعة عامل الإرساء:

sudo groupadd docker
sudo usermod -aG docker $USER
sudo service docker restart

ما زلت أواجه مشكلات في الاتصال عند تشغيل docker ps حيث أن المستخدم أعطاني الخطأ التالي:

Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.27/containers/json: dial unix /var/run/docker.sock: connect: permission denied

أدت إعادة تشغيل الخادم إلى إصلاح هذه المشكلة مما سمح لي بتشغيل أوامر عامل ميناء كمستخدم دون استخدام sudo:

sudo reboot now
... (wait for boot) ...
ssh server
docker ps

تعديل:

تم ذكر أنك تحتاج فقط إلى تسجيل الخروج / تسجيل الدخول لتحديث هذا ، ولا حاجة إلى إعادة التشغيل لتشغيل أوامر docker بدون sudo بعد إضافة المستخدم إلى مجموعة docker.

باستخدام sudo حلها بالنسبة لي أيضًا

بدون تسجيل الخروج:

sudo usermod -aG docker $USER
su $USER -

كما ذكر أعلاه بالفعل:

sudo usermod -aG docker $USER

تسجيل خروج.
تسجيل الدخول.
منجز.

عانيت من نفس المشكلة وفي حالتي كان السبب هو أن لدي بعض الملفات في المجلد مع Dokcerfile التي ليس لدي أي حقوق وصول إليها. بعد تشغيل chown بدأ الجميع في العمل بشكل جيد.
الحل مع usermod لم يعمل معي.

تحديث
لقد حدث ذلك مرة أخرى بالنسبة لي وهذه المرة كان الحل هو إزالة جميع حاويات الرصيف باستخدام:

docker ps -aq | xargs docker rm

هذه في الواقع مشكلة التثبيت. يرجى الرجوع إلى الصفحة الرسمية لما بعد التثبيت. أنا حل هذه المشكلة بمساعدة المستند.

كما قال @ TrkiSF2 أعلاه. بعد إضافة المستخدم الخاص بك إلى مجموعة عامل الإرساء ، تحتاج إلى تسجيل الخروج وتسجيل الدخول مرة أخرى حتى يتم تفعيلها.

تم رفض الإذن أثناء محاولة الاتصال بمقبس Docker daemon على unix: ///var/run/docker.sock: احصل على http: //٪2Fvar٪2Frun٪2Fdocker.sock/v1.29/containers/json: dial unix /var/run/docker.sock: connect: تم رفض الإذن

الحل: # chmod -Rf 777 /var/run/docker.sock

حل إعادة التشغيل بعد القيام به

sudo usermod -aG docker $ {USER}

حصلت على هذه المشكلة على قطرة المحيط الرقمية. أدى تعيين تطبيق droplet الصغير إلى إدارة kernel الداخلية إلى إصلاح هذه المشكلة بالنسبة لي https://www.digitalocean.com/community/tutorials/how-to-update-a-digitalocean-server-s-kernel#setting -up-the-droplet-for -الداخلية-إدارة النواة

كانت لدي هذه المشكلة في إعادة شراء الكود الذي كان يبني جيدًا لحظة واحدة ثم لا. كان لدي مستودعات أخرى على نفس الجهاز ونفس الحساب الذي تم إنشاؤه بشكل جيد ، لذلك لم تكن مشكلة في المجموعات أو أي شيء يتعلق بتكوين النظام. لم يكن لدي مجموعة DOCKER_HOST env var. أظن أن هذا الخطأ يمكن أن يكون ناتجًا عن مجموعة متنوعة من الأسباب ، ولكن بالنسبة لي انتهى به الأمر إلى ملكية الجذر لعناصر البناء في دليل الريبو. sudo chown -R جميع الملفات الموجودة في الريبو لحساب المستخدم حلت المشكلة بالنسبة لي.

أنا شخصياً جربت حل cloojure ونجح . ولكن فقط بعد أن أضفت نفسي إلى مجموعة عمال النقل وأعدت تسجيل الدخول. جزء إعادة تسجيل الدخول هو العنوان الأساسي

واجهت نفس رسالة الخطأ هذه ، تمامًا مثل ChrisPappalardo ، كان ذلك بسبب مشكلة إذن ملف وليس البرنامج الخفي. sudo chown -R إصلاحه على أصول الإنشاء

أحصل على نفس رسالة الخطأ عند تشغيل "إنشاء عامل ميناء".
لذلك أضفت الأمر sudo وهو يعمل بشكل جيد. (sudo docker-compose build $)

قد يكون هذا حلاً آخر:
sudo chmod 777 /var/run/docker.sock

Farada تغيير الأذونات أمر خطير ؛ الوصول إلى Docker API يعادل الوصول إلى الجذر على جهازك ؛ تغيير الأذونات إلى 777 يمنح أي شخص على حق الوصول إلى الجذر المضيف.

تعد إضافة المستخدم الخاص بك إلى مجموعة عامل الإرساء هو الحل لذلك ، كما هو مذكور أعلاه ، تحتاج إلى إعادة تشغيل الخادم / جهاز الكمبيوتر الخاص بك. من فضلك لا تشمود أي شيء إلى 777!

إذا قمت بتثبيت docker باستخدام الأمر sudo ، فجرّب sudo YOUR_COMMAND.

في حالتي ، أنشأ Docker مجلدات وملفات في مجلد مشروعي كلما قمت بتشغيل الحاوية (أستخدم وحدات التخزين لربط جميع المصادر وما إلى ذلك).

بشكل افتراضي ، يتم تشغيل صورة عامل إرساء مع المستخدم الجذر ، وهذا هو سبب المشكلة. كلما قمت بتشغيل عمليات الإنشاء في صورتي ، سيكون لملفات الإخراج مجموعة أذونات root:root ، والتي تنعكس في
نظام الملفات.

اتضح أنه تم طرح هذا الخطأ عندما يتعذر على Docker الوصول إلى هذه الملفات ، لأنه عندما يبدأ الإنشاء ، يتم تشغيله كمستخدم قمت بتنفيذ الأمر معه. عندما تصل إلى dirs / الملفات بـ root:root ، ستفرج وتعطي خطأ ....is it running? عندما يجب أن تقول permission denied in X, cannot continue .

في حالتي ، أضفت للتو الملفات التي أنشأتها صورة Docker إلى .dockerignore وتم حلها على الفور.

في الأساس ، لقد تلقيت خطأ غير ذي صلة.

تحرير أرى الكثير من الأشخاص يستخدمون sudo كروح. السبب في أن هذا العمل "السحري" هو بسبب القضايا التي أصفها في هذا التعليق. عند التشغيل ضمن sudo ، لم تعد الأذونات مشكلة منذ تشغيلك كجذر. هذا ليس حلا!

لقد تم الحصول على هذا:

 docker-compose build
db uses an image, skipping
Building web
ERROR: Couldn't connect to Docker daemon at http+docker://localunixsocket - is it running?

If it's at a non-standard location, specify the URL with the DOCKER_HOST environment variable.

كانت المشكلة أن بعض الملفات في سياق Dockerfile لها أذونات مقيدة ، وقد تم إصلاحها بسرعة sudo chown -R damo ./* .

ومع ذلك ، أود أن أزعم أن هناك بالفعل مشكلة في docker-compose هنا - كان يجب أن أتلقى رسالة خطأ إعلامية تحدد بدقة أنها فشلت بسبب خطأ في الأذونات ، بدلاً من خطأ اتصال غامض كان عبارة عن رنجة حمراء في حالتي لأنني أضيع الوقت في العبث بخدمة Docker daemon نفسها.

حصلت على هذا عدة مرات.

بالنسبة لي ليست مشكلة التكوين. بدلاً من ذلك ، يبدو الأمر وكأن Docker يموت ويتوقف ، خلال بعض الأحداث ما زلت لا أستطيع معرفة وقت حدوثه.

على أي حال ، إذا كان حدسي صحيحًا ، فقد يكون الإصلاح sudo service docker restart ولكن يبدو أن هذا غير كافٍ.

لذا في النهاية ، الحل الوحيد الذي يعمل هو إعادة التشغيل .

يرتبط برنامج Docker daemon بمقبس Unix بدلاً من منفذ TCP. افتراضيًا ، يكون مقبس Unix مملوكًا لجذر المستخدم ويمكن للمستخدمين الآخرين الوصول إليه فقط باستخدام sudo. يعمل Docker daemon دائمًا كمستخدم أساسي. تثبيت لينكس بوست

$ sudo groupadd docker
$ sudo usermod -aG docker $USER

تذكير: (تذكر إعادة تشغيل الجلسة أو إعادة تشغيل VM)

  • إذا كان الاختبار على جهاز افتراضي ، فقد يكون من الضروري إعادة تشغيل الجهاز الظاهري حتى تسري التغييرات.
  • في بيئة Linux لسطح المكتب مثل X Windows ، قم بتسجيل الخروج من الجلسة تمامًا ثم تسجيل الدخول مرة أخرى.

كان لي نفس المشكلة. كما ذكر آخرون ، عندما قمت بتشغيل عامل البناء مع sudo ، نجح الأمر.

مرحبًا يا رفاق ، لقد واجهت نفس المشكلة أثناء استخدامي Fedora 26 ثم وجدت الحل لـ Fedora 25 ، لكنه يعمل بالنسبة لي.

ها هو المقتطف:

$ sudo groupadd docker && sudo gpasswd -a ${USER} docker && sudo systemctl restart docker
$ newgrp docker

المرجع: https://developer.fedoraproject.org/tools/docker/docker-installation.html

آمل أن يساعدك ، شكرا

sudo systemctl status docker.service -l مفيد جدًا في إيجاد المشكلة الحقيقية.

كان لدي نفس الشيء ولكن فقط مع docker-compose build . كان هذا في النهاية مجرد مشكلة إذن الملف. لقد أنشأت ملفات داخل الحاوية ، مملوكة لجذر ، ولم أتمكن من إنشائها بهذه الملفات. لقد قمت ببساطة بعمل sudo chown -R $USER . وهو يعمل.

كنت أواجه نفس الخطأ في إنشاء حاوية mysql بعد حذف الحاوية السابقة.
السبب هو أن لدي مجلد بيانات (للاستمرار) كان مملوكًا للمستخدم في الحاوية السابقة.
كان الحل هو حذف مجلد البيانات. تحذير - ستفقد بياناتك. إذا كنت ترغب في الاحتفاظ ببياناتك ، فربما تقوم بنقل مجلد البيانات أو تعيين مالكين جدد.

فعلت الحيلة مضيفا نفسي إلى المجموعة
usermod -aG docker $ {USER}

إعادة التشغيل ويعمل!

بالنسبة لي ، تم حل هذا عن طريق تسجيل الدخول إلى وضع المسؤول: sudo -s

إذا كان هذا يساعد!

لقد حصلت على نفس رسالة الخطأ هذه باستخدام اسم صورة يحتوي على حرف "+". (حدث هذا لأنني كنت أقوم بتسمية صوري بعد معرف التحكم في الإصدار.)

على سبيل المثال ، يحتوي docker-compose.yaml على:

services:
  foobar:
    image: "foobar:a-b+c"
    ....

فشل مع

Building foobar
ERROR: Couldn't connect to Docker daemon at http+docker://localunixsocket - is it running?

If it's at a non-standard location, specify the URL with the DOCKER_HOST environment variable.

لكن إزالة "+" من اسم الصورة عملت بشكل جيد.

fabiopaiva لست متأكدًا مما إذا قام شخص ما بالرد عليك ولكن يجب أن يكون sudo حصريًا في البداية لأن أي مستخدم يمكنه تنفيذ أمر عامل الإرساء يمكن أن يصبح sudo في المضيف .
يمكن لأي شخص لديه حق الوصول إلى تنفيذ عامل الإرساء تشغيل عامل إرساء بسيط يربط نظام ملفات المضيف بالكامل والوصول إليه كجذر (أي ملفات ظل لكلمات المرور أو إذن تعديل النظام بأكمله).
لذلك عليك أن تكون حريصًا جدًا لمن يمكنه استخدام هذا الأمر.

شكرًا Gronan ، لا أتذكر بوضوح حول هذا الموضوع.
ولكن ، فيما يتعلق بشرحك ، إذا قمت باستخدام sudo ، فأنت تمنح هذا التحكم على أي حال.
شكرا لك على التفسير

لا تحتاج sudo.
أضف المستخدم الخاص بك إلى مجموعة عامل ميناء ، عامل ميناء
وأعد تشغيل خدمة docker ، أو إعادة تشغيل docker ، أو إعادة تشغيل systemctl docker.service

لا حاجة إلى إعادة تشغيل النظام.

تتعلق هذه المشكلة بكيفية تشغيل عملية linux في ظل أي مستخدم وأي مجموعة وماذا يحدث عندما تقوم بتغيير العضوية إلى مجموعة العملية وكيف ستدخل حيز التنفيذ.

usermod -aG docker ${USER}
ثم _reboot_.

هذا لأن Docker daemon يعمل كمستخدم جذر و docker-compose كمستخدم عادي

ثلاث خطوات لإصلاحها:

  1. sudo groupadd عامل إرساء
  2. sudo usermod -aG docker $ USER
  3. أعد التشغيل لتحديث التغييرات.

مزيد من التفاصيل في:
https://docs.docker.com/engine/installation/linux/linux-postinstall/#manage -docker-as-a-non-root-user

بدلاً من إعادة التشغيل ، يمكنك فقط كتابة su - ${USER} . أعتقد أن هذا يعيد تحميل المستخدم النشط حاليًا في Terminal.

https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-on-ubuntu-16-04

لقد نجح هذا بالنسبة لي دون إعادة التشغيل:

  1. إضافة مجموعة عامل ميناء:
    sudo usermod -aG docker ${USER}
  2. يركض
    id
  3. إذا لم تظهر مجموعة "عامل الإرساء" في قائمة المجموعة - قم بتسجيل الخروج وتسجيل الدخول مرة أخرى

انتهى بي الأمر إلى أنه في سياق إنشاء عامل الإرساء ، كان لدي ملفات لا يملكها المستخدم ولا مجموعتي. على سبيل المثال ، قمت بتثبيت مجلد في سياق إنشاء عامل الإرساء الخاص بي على حاوية mongo ، لذلك كانت هذه الملفات مملوكة لمستخدم ومجموعة mongodb. لإصلاح ذلك ، قمت للتو بحذف هذا المجلد ، واستخدمت وحدة تخزين تم إنشاؤها بواسطة عامل الإرساء لخدمة mongodb الخاصة بي بدلاً من ذلك ، وبعد ذلك تمكنت من تشغيل docker-compose بدون sudo

يمكنني أن أؤكد ملاحظة alexcdot : كانت الملفات الموجودة في مستودع مشروعي مملوكة من قبل الجذر (dunno كيف وصلت إلى هناك). حذفهم حل المشكلة. الآن يمكنني تشغيل docker-compose بدون امتيازات sudo.

التأكيد أيضًا على حلalexcdot و @ tbuss93 . عملت لي كذلك. أعتقد أنه في مثل هذه الحالة ، يجب أن يكون الخطأ أكثر سهولة في الاستخدام ويعرض بشكل مثالي الملفات ذات المشكلات.

لقد واجهت هذه المشكلة اليوم لدفتر ملاحظات جديد. لقد حللت ذلك على هذا النحو
1) وقف عامل ميناء

sudo service docker stop

إذا نظرت إلى إذن الملف هذا ، فسترى أنه بدون sudo لن تتمكن من الوصول إلى Docker daemon

sudo ls -la /var/run/docker.sock
srw-rw---- 1 root docker 0 Dec 21 19:16 /var/run/docker.sock

2) أقوم بإزالة docker.sock هذا

sudo rm  /var/run/docker.sock

شكرا rbahumi
3) أقوم بتشغيل هذا الأمر

sudo usermod -aG docker ${USER}

والآن أنت على وشك الانتهاء ، فقط قم بتسجيل الخروج أو الأفضل فقط إعادة تشغيل الكمبيوتر ، فلن تضطر إلى بدء الخدمة لأنها تبدأ تلقائيًا

@ cooljl31 يبدو أن إزالة المقبس غير ضروري ، حيث تُظهر الأذونات أن أعضاء مجموعة عامل الإرساء لديهم وصول rw. سيكون عليك إعادة تشغيل عامل الإرساء والجلسة بالرغم من ذلك.

ومع ذلك ، يبدو أن هذا الإصلاح لا علاقة له بالمشكلة

أدى هذا إلى حل مشاكلي: https://docs.docker.com/install/linux/linux-postinstall/#manage -docker-as-a-non-root-user
فقط تذكر أن تقوم بتسجيل الخروج وتسجيل الدخول مرة أخرى. قم بتشغيل الأوامر كمستخدم تريد استخدام عامل الإرساء.

sudo usermod -aG username

ثم قم بتسجيل الخروج وتسجيل الدخول لجعله يعمل.

عملت مثل السحر بالنسبة لي.

اضطررت أيضًا إلى بدء تشغيل خدمة Docker يدويًا بعد التثبيت الجديد لـ docker-ce (17.12.0 ~ ce-0 ~ ubuntu) وإنشاء عامل الإرساء لجعل رسالة الخطأ تختفي:

sudo service docker start

باتباع الخطوات الموضحة في الوثائق ، تم حل المشكلة مع تثبيت Ubuntu 16.04 الجديد.

اضطررت إلى إعادة تشغيل النظام بعد تطبيق هذه التغييرات رغم ذلك.

استخدم الأمر: sudo docker-compose up -d

إذا قابلت:
$ عامل الإرساء
خطأ: تعذر الاتصال بـ Docker daemon على http + docker: // localunixsocket - هل يعمل؟

إذا كان في موقع غير قياسي ، فحدد عنوان URL باستخدام متغير البيئة DOCKER_HOST.

يجب عليك التحقق مما إذا كان مستخدم تسجيل الدخول الحالي ينتمي إلى مجموعة مستخدمين /var/run/docker.sock docker .
جرب تشغيل Compose as sudo.

لحل هذا بدون sudo افعل كما قال leoyuholo في التعليق الثاني

أحصل على نفس رسالة الخطأ عند تشغيل عامل ميناء.
يتم حلها عن طريق إضافة نفسي إلى "عامل ميناء" مجموعة المستخدمين

حاول تشغيل الأمر التالي لإضافة نفسك إلى المجموعة usermod -aG docker $ {USER}

أو يمكنك تشغيل الأمر التالي لمعرفة المجموعات التي تنتمي إليها مجموعات $ USER

بعد ذلك قم بتسجيل الخروج وتسجيل الدخول مرة أخرى وهو يعمل

رابط التعليق https://github.com/docker/compose/issues/1214#issuecomment -102246925

ملاحظة. هذا لأشخاص مثلي يتخطون التعليقات الزوجية الأولى -_-

فقط لأنني استغرقت وقتًا طويلاً لإعادة dsicover هذا ، وهو أول شيء أضغط عليه على google. لا حرج في أذونات المستخدم الخاصة بي على الكمبيوتر المحمول الخاص بي. كانت المشكلة هي أذونات الملف على أحد المجلدات التي تم تحميلها. إذا قمت إما بإصلاح الأذونات بحيث لا تحتاج إلى الجذر للوصول إليها ، أو حذفها (في حالتي ، فهي أصول مخزنة مؤقتًا للقضبان) ، فإنها تمر بنجاح.

المشكلة الحقيقية هي أن رسالة الخطأ لا تخبرك بالمشكلة المحددة عند الإنشاء عبر docker-compose.

التقيت القضية أيضا. إنها قضية وصول المستخدم.
لقد قمت بحلها عن طريق تثبيت docker-compose في وضع الجذر وتشغيل docker-compose أيضًا في وضع الجذر.

zjhken هذا ليس حلاً حقًا ، ولكنه حل بديل.
هناك خطأ ما في أذونات الملف في مجلد المشروع أو أذونات المجموعة. راجع alexcdot وملاحظاتي للحالة الأولى ، وجرب sudo usermod -aG docker <your username> متبوعًا بإعادة تسجيل الدخول للحالة الأخيرة.

@ tbuss93 أنت على حق. لقد استخدمت الحل لحلها. إنها تعمل. قد يكون هذا هو الحل الأفضل.

اكتب => معلومات عامل الإرساء sudo

فقط أضف sudo قبل الأمر الذي تحاول تشغيله!

لذا في حالتي ، فإن المستخدم gitlab_ci_multi_runner هو جزء من مجموعة عامل الإرساء. إذن هذه ليست مشكلتي:

groups $USER
   gitlab_ci_multi_runner : gitlab_ci_multi_runner docker

لكن لسبب ما ما زلت أتلقى بعض الوقت (لاحظ أن هذا هو الحال في بعض الأحيان): Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

بمعنى أن لدي شعور بأن شيطاني يتحطم أو غير مستقر؟ هذا ليس مفيدًا ، لأنني أرغب في الحصول على تكامل مستمر مستقر وموثوق باستخدام Docker. هل من أفكار كيف يمكنني تصحيح عدم الاستقرار هذا أكثر من ذلك؟

شكر!

أيها الناس ، يتنفسون على الإطلاق من أجل لغتي الإنجليزية. لدي نفس المشكلة ولكن أدرك أن هذا يحدث على konsole داخل kde ، لكن عندما أركض في محطة طرفية crt alt f1 ، لا أحتاج إلى استخدام sudo !. لدي بالفعل $ USER في مجموعة عامل الإرساء. أتمنى أن تفهمني. - شكرا

مجرد تشغيل

sudo chown $USER:docker /var/run/docker.sock

لقد واجهت أيضًا مشكلة "لا يمكن الاتصال بـ Docker daemon على unix: ///var/run/docker.sock. هل برنامج Docker daemon يعمل؟ لاحقًا لاحظت ما يلي.

[ ec2-user @ ip-172-28-6-201 docker -elk] $ الذي يؤلف عامل
/ usr / local / bin / docker-compose
[ ec2-user @ ip-172-28-6-201 docker -elk] $ أي عامل
/ usr / bin / docker-compose

نظرًا لأن ملف Docker-compose binary موجود داخل / usr / local ، فقد تمكنت من تنفيذ أمر docker-compose بدون 'sudo'. لتنفيذ أمر 'docker' ، كنت بحاجة إلى وصول sudo.

لقد أصلحت باستخدام الأوامر التالية.

cp / usr / local / bin / docker-compose / usr / bin / docker-compose
chmod + x / usr / bin / docker-compose
sudo rm / usr / local / bin / docker-compose

تحقق الآن من أن أمر "docker-compose" يحتاج إلى sudo لتنفيذه.
بعد تنفيذ الخطوات المذكورة أعلاه ، يعمل أمر docker-compose بالنسبة لي.

بعد إضافة المستخدم إلى مجموعة عامل ميناء
إعادة تشغيل الجهاز ستفعل.

بالنسبة لي العمل.
[ ec2-user @ ip-172-31-7-179 docker -elk] $ sudo

إصدار إنشاء عامل الإرساء والعامل الخاص بي هما.

[ ec2-user @ ip-172-31-7-179 docker -elk] $ sudo docker version
عميل:
الإصدار: 17.06.2-ce
إصدار API: 1.30
إصدار Go: go1.8.4
Git الالتزام: 3dfb8343b139d6342acfd9975d7f1068b5b1c3d3
البناء: الجمعة 10 نوفمبر 00:50:37 2017
OS / Arch: لينكس / amd64

الخادم:
الإصدار: 17.06.2-ce
إصدار API: 1.30 (الحد الأدنى للإصدار 1.12)
إصدار Go: go1.8.4
Git الالتزام: 402dd4a / 17.06.2-ce
بني: الجمعة 10 تشرين الثاني (نوفمبر) 00:51:08 2017
OS / Arch: لينكس / amd64
التجريبية: خطأ
[ ec2-user @ ip-172-31-7-179 docker -elk] $ sudo
إصدار docker-compose 1.21.2 ، بناء a133471
إصدار docker-py: 3.4.0
إصدار CPython: 2.7.12
إصدار OpenSSL: OpenSSL 1.0.2k-fips 26 يناير 2017

بعد اتباع إجراء إضافة المستخدم ، تأكد من إعادة تشغيل جهازك.

يمكنني إنتاج هذه الرسالة بشكل موثوق به من خلال مشروع منظم مثل هذا:

├── عامل بناء. yml
├── ملف Dockerfile
└── مجلدات

إذا تجاوزت "المجلدات" حجمًا معينًا ، فسأتلقى الخطأ التالي ، عند تشغيل "إنشاء عامل بناء":

  • > خطأ: تعذر الاتصال بـ Docker daemon على http + docker: // localunixsocket - هل يعمل؟ إذا كان في موقع غير قياسي ، فحدد عنوان URL باستخدام متغير البيئة DOCKER_HOST.

يبدأ تشغيل الأمر باستخدام sudo في إنشاء الصورة ، ولكن من الجيد ألا تضطر إلى الاعتماد على sudo في التشغيل الآلي.

يبدو أن سبب هذه المشكلة في حالتي هو تمرير مجلدات dir إلى سياق البناء . أعتقد بعض القيود على المستخدمين غير sudo لبناء حجم السياق؟ أو مهلة؟

لذا في المثال الخاص بي ، يكون الإصلاح إما نقل وحدات التخزين dir ، أو إضافتها إلى ملف .dockerignore ، لحل هذه النكهة الخاصة لرسالة الخطأ هذه.

cd / var / run
sudo chmod 777 docker.sock
بدء تشغيل عامل ميناء خدمة sudo
عامل ميناء تشغيل مرحبا العالم
مرحبًا من Docker!
توضح هذه الرسالة أن التثبيت يبدو أنه يعمل بشكل صحيح.

حل المشكلة :)

مع sudo

إذا لم ينجح كل ما قيل هنا ، فأعد تثبيت عامل الإرساء. عملت معي.

لا حاجة لإعادة تشغيل الجهاز في تجربتي وهو أمر مفيد إذا كنت تعمل في بيئة إنتاج - بعد sudo usermod -aG docker $USER ، قم بتسجيل الخروج وتسجيل الدخول مرة أخرى. يجب أن يمرر هذا تعيين مجموعة المستخدمين الجديدة إلى أي برنامج أو تطبيق يحتاجها.

إذا تعذر ذلك ، فإن رد root و docker للوصول إلى docker.sock و chmod 777 سيمنح rwx حق الوصول لكل مستخدم.

/usr/lib/python2.7/dist-packages/requests/__init__.py:80: RequestsDependencyWarning: urllib3 (1.23) or chardet (3.0.4) doesn't match a supported version!
  RequestsDependencyWarning)
ERROR: Couldn't connect to Docker daemon at http+docker://localunixsocket - is it running?

If it's at a non-standard location, specify the URL with the DOCKER_HOST environment variable.

كنت أواجه نفس المشكلة الآن الآن تشغيل $ sudo docker-compose . لقد أصبحت الجذر أولاً من خلال القيام بـ $ sudo su ، ثم قمت بتشغيل docker-compose طبيعي.

استخدم هذا الرابط لحل المشكلة لأنها تعمل بالنسبة لي. كان لدي نفس المشكلة ولكن الآن يعمل بشكل جيد

https://techoverflow.net/2017/03/01/solving-docker-permission-denied- while-trying-to-connect-to-the-docker-daemon-socket/

أحصل على نفس رسالة الخطأ عند تشغيل عامل ميناء.
يتم حلها عن طريق إضافة نفسي إلى "عامل ميناء" مجموعة المستخدمين

حاول تشغيل الأمر التالي لإضافة نفسك إلى المجموعة
usermod -aG docker ${USER}

أو يمكنك تشغيل الأمر التالي لمعرفة المجموعات التي تنتمي إليها
groups $USER

ثم أعد تشغيل الكمبيوتر

هذا الموضوع مفيد.

لقد دخلت نفس القضية. على العكس من ذلك ، أضفت sudo في بداية سطر الأوامر وتم حلها!

مجرد تشغيل

sudo chown $USER:docker /var/run/docker.sock

هذا واحد يعمل لي لست متأكدًا من سبب عدم حل إضافة $ USER إلى مجموعة عامل الإرساء.
تحرير: اتضح أن خدمة عامل الإرساء تعيد إنشاء /var/run/docker.sock كل مرة يتم فيها إعادة التحميل. تحتاج إلى إعادة الخدعة المذكورة في كل مرة تقوم فيها بإعادة تشغيل عامل الإرساء (لن يحدث كثيرًا ، أليس كذلك؟)

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات