لقد جربت كل شيء في هذا الموضوع: 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
أيه أفكار؟ حاولت أيضًا تثبيت التين الذي يعمل على الفور دون أي مشكلة ...
أحصل على نفس رسالة الخطأ عند تشغيل عامل ميناء.
يتم حلها عن طريق إضافة نفسي إلى "عامل ميناء" مجموعة المستخدمين
حاول تشغيل الأمر التالي لإضافة نفسك إلى المجموعة
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
هذا حل وليس حلاً ، أليس كذلك؟
ما زلت في كثير من الأحيان مع هذا
هذه ليست قضية إنشاء. إذا لم تتمكن من الاتصال بخادم عامل التحميل من خلال الإنشاء ، فهناك عدة أسباب محتملة:
DOCKER_
، والتي تتم غالبًا عن طريق تشغيل eval $(docker-machine env default)
هذه ليست مشاكل يمكن حلها عن طريق التأليف.
توجد مشكلة في 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)
كان لي نفس المشكلة. كما ذكر آخرون ، عندما قمت بتشغيل عامل البناء مع 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 كمستخدم عادي
ثلاث خطوات لإصلاحها:
مزيد من التفاصيل في:
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
لقد نجح هذا بالنسبة لي دون إعادة التشغيل:
sudo usermod -aG docker ${USER}
id
انتهى بي الأمر إلى أنه في سياق إنشاء عامل الإرساء ، كان لدي ملفات لا يملكها المستخدم ولا مجموعتي. على سبيل المثال ، قمت بتثبيت مجلد في سياق إنشاء عامل الإرساء الخاص بي على حاوية 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
└── مجلدات
إذا تجاوزت "المجلدات" حجمًا معينًا ، فسأتلقى الخطأ التالي ، عند تشغيل "إنشاء عامل بناء":
يبدأ تشغيل الأمر باستخدام 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
طبيعي.
استخدم هذا الرابط لحل المشكلة لأنها تعمل بالنسبة لي. كان لدي نفس المشكلة ولكن الآن يعمل بشكل جيد
أحصل على نفس رسالة الخطأ عند تشغيل عامل ميناء.
يتم حلها عن طريق إضافة نفسي إلى "عامل ميناء" مجموعة المستخدمينحاول تشغيل الأمر التالي لإضافة نفسك إلى المجموعة
usermod -aG docker ${USER}
أو يمكنك تشغيل الأمر التالي لمعرفة المجموعات التي تنتمي إليها
groups $USER
ثم أعد تشغيل الكمبيوتر
هذا الموضوع مفيد.
لقد دخلت نفس القضية. على العكس من ذلك ، أضفت sudo في بداية سطر الأوامر وتم حلها!
مجرد تشغيل
sudo chown $USER:docker /var/run/docker.sock
هذا واحد يعمل لي لست متأكدًا من سبب عدم حل إضافة $ USER إلى مجموعة عامل الإرساء.
تحرير: اتضح أن خدمة عامل الإرساء تعيد إنشاء /var/run/docker.sock
كل مرة يتم فيها إعادة التحميل. تحتاج إلى إعادة الخدعة المذكورة في كل مرة تقوم فيها بإعادة تشغيل عامل الإرساء (لن يحدث كثيرًا ، أليس كذلك؟)
التعليق الأكثر فائدة
حل لي أيضا مع الأمر sudo