Compose: 无法通过http + unix://var/run/docker.sock连接到Docker守护程序-它正在运行吗?

创建于 2015-03-29  ·  131评论  ·  资料来源: docker/compose

我在此线程中尝试了所有操作: https :

仍然没有运气。

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条评论

运行docker时出现相同的错误消息。
通过将我自己添加到用户组“ docker”来解决

尝试运行以下命令将您自己添加到该组
usermod -aG docker ${USER}

或者,您可以运行以下命令来找出您所属的组
groups $USER

看起来docker-compose在这里无视$DOCKER_HOST env var,因为它试图连接到套接字而不是127.0.0.1地址。

这里同样的问题

我刚才遇到了同样的错误消息,那一次我的笔记本电脑WiFi在没有有线连接的情况下关闭了。 我启用WiFi并连接到家庭无线网络,然后问题解决了。

您可以在https://www.virtualbox.org/wiki/Testbuilds上尝试5.0.3(预构建)吗? 它为我解决了这个问题。

我在Mac上使用docker时遇到了问题,但是它解决了一个问题,我在没有sudo的情况下运行了compose命令,因此这似乎是用户问题,

sudo命令也对我有影响

@rept您还有这个问题吗? 您报告的Docker版本已有一年多的历史了,以Docker术语来说,这是史前的:)

我想知道这个问题是否应该公开,因为它现在正在收集无法达到守护程序的所有_possible_原因(我并不是说这很糟糕;感谢大家提出的解决方案,我们感激不尽)

我在完全不同的计算机上进行了新安装,并且现在可以正常工作。 所以你关闭它。

谢谢@rept ,很高兴听到它已解决!

我懂了

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

每次我在docker-compose.yml激活tty: truestdin_open: true docker-compose.yml并运行docker-compose up

可以关联吗?

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

我刚刚解决了使用sudo运行“ docker-compose run ...”命令的问题。

我在无所事事期间运行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

那是一种解决方法,而不是解决方案,对吗?

我仍然经常面对这个

这不是一个复杂的问题。 如果您无法通过compose连接到docker守护进程,则可能有以下几种原因:

  • 您忘记导出DOCKER_ env变量,通常是通过运行eval $(docker-machine env default)
  • 您和远程Docker主机之间存在网络问题(如果您在云提供商上运行)
  • Virtualbox VM中运行的docker守护程序存在问题
  • 您的用户由于权限而无法访问docker daemon套接字(如果您正在linux主机上运行)。 解决方案是对sudo或修复权限。

这些不是compose可以解决的问题。

tty ,在这里出票:#3106

我可以确认:这不是docker-compose问题。

如果有帮助:我在Ubuntu主机上遇到了相同的问题(无法连接...)。 运行sudo systemctl status docker.service -l显示“真实”问题。 我的解决方案是删除“ / var / lib / docker / network / files /”中的所有文件,然后重新启动docker服务。

@dnephin @madflow ,我认为这是一个

由于具有相同的docker映像和docker网络,因此可以使用以下命令成功启动容器

 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 up”而失败。 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我认为您的问题已包含在#2816中,这是Docker Engine中的错误。

重新启动docker services之后,它对我有用:(

服务docker重新启动

调试15分钟后,我遇到了相同的错误。 原来它只需要一个sudo :)
https://docs.docker.com/engine/installation/linux/ubuntulinux/上签出[创建Docker组]以摆脱sudo前缀。

为什么需要使用sudo运行?

默认情况下, @ fabiopaiva docker连接到unix套接字,该套接字是具有root用户和docker组读取/写入特权的文件:

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

因此您需要是root或docker组的成员才能连接到它。 如果docker在tcp套接字上监听,则权限将不适用。

我删除文件/var/run/docker.sock
如何纠正?

@pixies重新启动

这是正确的答案。 在许多情况下,您需要注销然后重新登录才能使更改生效。 使用sudo运行命令也可以,但是将必要的用户添加到docker组是更好的解决方案,因此您不必放弃sudo访问权限。

leoyuholo于2015年5月14日发表评论

通过将我自己添加到用户组“ docker”来解决

尝试运行以下命令将您自己添加到该组
usermod -aG docker ${USER}

或者,您可以运行以下命令来找出您所属的组
groups $USER

如果重新启动机器,则它确实可以正常工作。

@alexanderadam您找到任何解决方案吗? 我现在有同样的错误

@CnytSntrk对不起,否则我解决了问题。 :眨眼:
但是祝你好运:four_leaf_clover:找到解决办法!

@alexanderadam谢谢:+1:

我刚刚解决了使用sudo运行“ docker-compose run ...”命令的问题。

我解决了添加sudo的问题

重新启动对我有用

在将用户添加到docker组以避免sudo后,我也遇到了问题。 重新启动解决了所有问题! 谢谢

将用户添加到docker组后,无需重新启动,只需注销并登录,即可为我工作

我在拉曼之前尝试过。 没用不管怎么说,还是要谢谢你

+1

在Ubuntu 16.04上仍然存在问题,并将我自己添加到docker组中,然后重新进行记录即可。 此问题不应关闭。

Ubuntu 16.04
https://github.com/docker/compose/issues/1214#issuecomment -102246925
工作完美,但在重新启动之前

Ubuntu 16.04具有相同的错误

解决方案(来自https://docs.docker.com/engine/installation/linux/debian/,不仅适用于Debian):

添加docker组(如果尚不存在)。
sudo groupadd docker

将连接的用户“ $ {USER}”添加到泊坞窗组。
更改用户名以匹配您的首选用户。
您可能需要注销并重新登录以获取
这样才能生效。
sudo gpasswd -a ${USER} docker

重新启动Docker守护程序。
sudo service docker restart

@mikevoets是的,我认为应该可以解决此问题。

我在新安装中发生了同样的事情,并意识到这是因为我没有使用'sudo'。

有谁知道如何在不使用sudo的情况下运行它?

看到我的回复Marco

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,添加到docker组将有所帮助。

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

之后,它对我的​​非root用户vagrant可以正常工作。

这仅在将用户添加到docker组后登录和注销后才对我有用。

FWIW,我需要先重新启动系统,然后才能为我工作。 这可能是由于这样的事实linux-image-extra-*所要求的内核包是新安装的泊坞窗的Ubuntu Xenial 。 请参阅Ubuntu版本的先决条件

如果需要首先启动守护程序,请尝试运行dockerdsudo dockerd 。 如果你开始dockerdsudo你可能要运行docker-compose upsudo也。 否则很好。

由于我在此线程中使用了一些建议的命令,因此我想分享自己的经验。

我在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相关的问题,而是Linux套接字权限问题(在php-fpm和nginx之间非常常见的问题)。

1)Docker是经典的HTTP客户端/服务器应用程序,客户端将通过套接字或IP与服务器对话
2)套接字是一个Linux文件,具有权限,它属于一个用户和一个组:

    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 install [package] -user而不是sudo,在某些情况下,使用sudo会在执行应用程序本身时引起身份验证问题。

2017年1月25日下午5:38,oesah [email protected]写道:

我有问题,我用pip install docker-compose。 我卸载了它并使用sudo pip install docker-compose。 现在命令sudo docker-compose up可以工作了。

希望能有所帮助。

-
您收到此邮件是因为您发表了评论。
直接回复此电子邮件,在GitHub https://github.com/docker/compose/issues/1214#issuecomment-275255529上查看,或使线程https://github.com/notifications/unsubscribe-auth/AMoEJ_g9iZOd2_BQUgaqgyk2mPLIv43eks5rV88AgaJpZM4D2v

在Fedora Linux上
将您的用户添加到Docker组
sudo usermod -aG docker username

重新启动此命令后,注销不像其他发行版那样足够

没有什么比推荐官方文档更好的了:

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

看一下这个。

官方文档始终是您应该寻求帮助的第一位。

所以我最终将用户添加到docker组:

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即可以用户身份运行docker命令:

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容器:

docker ps -aq | xargs docker rm

这实际上是安装问题。 安装后请参考官方页面。 我在文档的帮助下解决了这个问题。

正如@ TrkiSF2上面所说的。 将用户添加到docker组后,您需要注销并重新登录,以使他们生效。

尝试在unix:///var/run/docker.sock上连接到Docker守护程序套接字时获得的权限被拒绝:获取http://%2Fvar%2Frun%2Fdocker.sock/v1.29/containers/json:拨打unix /var/run/docker.sock:连接:权限被拒绝

解决方案:#chmod -Rf 777 /var/run/docker.sock

做完后重启解决

sudo usermod -aG泊坞窗$ {USER}

在数字海洋飞沫上遇到了这个问题。 将Droplet设置为内部内核管理为我解决了这个问题https://www.digitalocean.com/community/tutorials/how-to-update-a-digitalocean-server-s-kernel#setting -up-the-droplet-for -内部内核管理

我在构建良好的代码存储库上遇到了这个问题,然后就没有了。 我在同一台机器和同一帐户上拥有其他构建好的仓库,所以这不是组问题,也不是系统配置问题。 我没有设置DOCKER_HOST env var。 我怀疑此错误可能是由多种原因引起的,但对我来说,它最终成为repo目录中构建工件的根所有者。 sudo chown -R回购到用户帐户的所有文件为我解决了这个问题。

我亲自尝试了@cloojure的解决方案,它起作用了。 但是只有在我将自己添加到docker group并重新登录之后。 重新登录部分是essentail

我遇到了同样的错误消息,就像ChrisPappalardo一样,这是由于文件权限问题而不是守护程序引起的。 sudo chown -R的构建资产对其进行了修复。

运行“ docker-compose build”时,出现相同的错误消息。
所以我添加了sudo命令,效果很好。 ($ sudo docker-compose build)

这可能是另一种解决方案:
sudo chmod 777 /var/run/docker.sock

@Farada更改权限很危险; 可以访问Docker API等同于可以在您的计算机上具有root用户访问权限; 将权限更改为777可为主机上的任何人提供根访问权限。

解决方案是将用户添加到docker组中,如上所述,您需要重新启动服务器/计算机。 请不要将任何内容更改为777!

如果您使用sudo命令安装了docker,请尝试sudo YOU​​R_COMMAND。

就我而言,无论何时运行容器,Docker都会在项目文件夹中创建文件夹和文件(我使用卷来链接所有源等)。

默认情况下,Docker映像与root用户一起运行,这就是导致此问题的原因。 每当我在映像中运行构建过程时,输出文件都会设置root:root权限,这反映在我的
文件系统。

事实证明,当Docker无法访问这些文件时会引发此错误,因为在构建开始时,它将以执行命令的用户身份运行。 当它击中与目录/文件root:root将保释,并给通用....is it running?错误时,应该说permission denied in X, cannot continue

就我而言,我只是将Docker映像生成的文件添加到.dockerignore并立即解决了该问题。

因此,基本上,我得到了一个不相关的错误。

编辑我看到很多人将sudo用作灵魂。 之所以如此“神奇”,是因为我在此评论中描述的问题。 在sudo下运行时,权限不再是问题,因为您以root用户身份运行。 这不是解决方法!

我一直在得到这个:

 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但显然这还不够。

因此,最后唯一可行的解​​决方案是重新启动

泊坞窗守护程序绑定到Unix套接字而不是TCP端口。 默认情况下,Unix套接字是由root用户拥有的,其他用户只能使用sudo访问它。 docker守护程序始终以root用户身份运行。 Linux安装后

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

提醒:(记住要重新启动会话或重新启动VM)

  • 如果在虚拟机上进行测试,则可能需要重新启动虚拟机以使更改生效。
  • 在台式机Linux环境(例如X Windows)上,完全注销会话,然后重新登录。

我有同样的问题。 正如其他人提到的那样,当我使用sudo运行docker-compose时,它起作用了。

嗨,伙计们,我在使用Fedora 26时遇到了同样的问题,然后我找到了Fedora 25的解决方案,但这确实对我有用。

这是代码段:

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

参考: https :

希望对您有帮助,谢谢

sudo systemctl status docker.service -l对于查找实际问题非常有用。

我有相同的东西,但只有docker-compose build 。 最终这只是文件许可的问题。 我在容器内部创建了文件,该文件归root拥有,但无法使用这些文件进行构建。 我只是做了一个sudo chown -R $USER . ,它就可以了。

删除上一个容器后,我在创建mysql容器时遇到了相同的错误。
原因是我在先前的容器中有一个用户拥有的数据文件夹(用于持久性)。
解决的办法是删除数据文件夹。 警告-您将丢失数据。 如果您希望保留数据,则可以移动数据文件夹或分配新所有者。

做到了把自己加入小组的group俩
usermod -aG泊坞窗$ {USER}

重新启动并工作!

对我来说,这可以通过登录到管理员模式来解决:sudo -s

如果有帮助!

我通过使用包含“ +”字符的图像名称获得了相同的错误消息。 (这是因为我在版本控件ID之后命名图像。)

例如,一个包含以下内容的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。
拥有docker执行访问权限的任何人都可以启动一个简单的docker绑定整个主机文件系统,然后以root用户身份访问它(即影子文件以获取密码或修改整个系统的权限)。
因此,必须谨慎使用此命令。

谢谢@Gronan ,我不清楚这个线程。
但是,关于您的解释,如果您使用sudo运行,则无论如何都可以控制。
谢谢你的解释

不需要须藤。
将您的用户添加到docker组
并重新启动docker service,service restart docker或systemctl restart docker.service

无需重新启动系统。

此问题与Linux进程如何在哪个用户和哪个组下运行以及将成员身份更改为进程组时发生的情况以及它如何生效有关。

usermod -aG docker ${USER}
然后_reboot_。

这是因为docker守护程序以root用户身份运行,而docker-compose以常规用户身份运行

修复它的三个步骤:

  1. sudo groupadd泊坞窗
  2. sudo usermod -aG泊坞窗$ USER
  3. 重新启动以刷新更改。

更多详细信息,请参见:
https://docs.docker.com/engine/installation/linux/linux-postinstall/#manage -docker-as-a-non-root-user

无需重新启动,您只需键入su - ${USER} 。 我想这会重新加载终端中当前活动的用户。

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. 如果“ docker”组未出现在组列表中-注销并再次登录

我的问题最终是在我的docker构建环境中,我的文件既不属于我的用户也不属于我的组。 例如,我在docker build上下文中将文件夹安装到mongo容器,因此这些文件归mongodb用户和组所有。 为了解决这个问题,我只是删除了该文件夹,并使用了docker生成的卷作为mongodb服务,然后我就可以在没有sudo的情况下运行docker-compose

我可以确认@alexcdot的观察:我的项目存储库中的文件由root拥有(不知道它们是如何到达的)。 删除它们解决了这个问题。 现在,我可以在没有sudo特权的情况下运行docker-compose。

同时确认@alexcdot@ tbuss93解决方案。 也为我工作。 我认为在这种情况下,该错误应更易于使用,并且最好显示有问题的文件。

我今天有一个新的开发笔记本的问题。 我这样解决了
1)停止Docker

sudo service docker stop

如果您查看此文件许可权,将会看到没有sudo您将无法访问Docker守护程序

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似乎不需要删除套接字,因为权限显示

但是,此修复程序似乎与该问题无关

这解决了我的问题: https: //docs.docker.com/install/linux/linux-postinstall/#manage -docker-as-a-non-root-user
只记得注销并重新登录。以要使用docker的用户身份运行命令。

sudo usermod -aG用户名

然后注销并登录以使其正常运行。

对我来说就像一个魅力。

在重新安装docker-ce(17.12.0〜ce-0〜ubuntu)和docker-compose之后,我还必须手动启动docker服务,以使错误消息消失:

sudo service docker start

按照文档中描述的步骤,新的Ubuntu 16.04安装解决了该问题。

不过,在应用这些更改后,我不得不重新启动系统。

使用命令: sudo docker-compose up -d

如果你见过:
$ docker-compose up
错误:无法通过http + docker:// localunixsocket连接到Docker守护进程-它正在运行吗?

如果它位于非标准位置,请使用DOCKER_HOST环境变量指定URL。

您应该检查当前登录用户是否属于/var/run/docker.sock用户组docker
尝试将Compose作为sudo运行。

要解决此问题而无需sudo请按照@leoyuholo在第二条评论中所述进行操作,然后注销并重新登录。

运行docker时出现相同的错误消息。
通过将我自己添加到用户组“ docker”来解决

尝试运行以下命令以将自己添加到组usermod -aG docker $ {USER}

或者,您可以运行以下命令找出属于$ USER组的组

注销后重新登录即可正常工作

链接到评论https://github.com/docker/compose/issues/1214#issuecomment -102246925

ps。 这是给像我这样的人的,它跳过了前几个注释-_-

仅仅因为我花了很长时间才能重新发现它,这是我在Google上遇到的第一件事。 我在笔记本电脑上的用户权限没有问题。 问题是已安装文件夹之一上的文件权限。 如果您修复了权限,因此您不需要root用户即可访问它们,或者删除了它们(在我的情况下,它是用于rails的缓存资产),则可以成功通过。

真正的问题是,当您通过docker-compose进行构建时,错误消息没有告诉您具体的问题是什么。

我也遇到了这个问题。 这是一个用户访问问题。
我通过在root模式下安装docker-compose并在root模式下运行docker-compose来解决它。

@zjhken并不是真正的解决方案,而是一种解决方法。
您的项目文件夹中的文件权限或您的组权限有问题。 对于第一种情况,请参见@alexcdot和我的观察,并尝试sudo usermod -aG docker <your username>然后重新登录。

@ tbuss93你是对的。 我已经用你的解决方案解决了。 有用。 这可能是最好的解决方案。

写=> sudo docker info

只需在要运行的命令前添加sudo

因此,在我的情况下, gitlab_ci_multi_runner用户是docker组的一部分。 所以这不是我的问题:

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进行稳定,可靠的持续集成。 有什么想法可以进一步调试这种不稳定性吗?

谢谢!

人民,我根本不屑一顾我的英语。 我有同样的问题,但意识到它发生在kde的konsole中,但是当我在终端crt alt f1中运行时,我不需要使用sudo!。 我已经在码头工人组上有了$ USER了。 我希望你能理解我。-谢谢

赶紧跑;

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

我也遇到了'无法在unix:///var/run/docker.sock上连接到Docker守护程序的问题。 泊坞窗守护程序正在运行吗? 后来,我注意到了以下内容。

[ 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二进制文件位于/ usr / local内部,因此我能够在没有'sudo'的情况下执行docker-compose命令。 要执行“ docker”命令,我需要sudo访问。

我使用以下命令修复了问题。

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

现在,验证“ docker-compose”命令是否需要执行“ sudo”。
执行上述步骤后,docker-compose命令对我有效。

将用户添加到Docker组后
重新启动机器即可。

对我来说,它的工作。
[ ec2-user @ ip-172-31-7-179 docker -elk] $ sudo

我的docker和docker compose版本是。

[ ec2-user @ ip-172-31-7-179 docker -elk] $ sudo
客户:
版本:17.06.2-ce
API版本:1.30
Go版本:go1.8.4
Git提交:3dfb8343b139d6342acfd9975d7f1068b5b1c3d3
建造时间:2017年11月10日星期五00:50:37
操作系统/ Arch:linux / amd64

服务器:
版本:17.06.2-ce
API版本:1.30(最低版本1.12)
Go版本:go1.8.4
Git提交:402dd4a / 17.06.2-ce
建造时间:2017年11月10日星期五00:51:08
操作系统/ Arch:linux / 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 2017年1月26日

按照添加用户过程操作后,请确保您重新启动计算机。

我可以使用如下结构的项目可靠地产生此消息:

├──docker-compose.yml
├──Dockerfile
└──卷

如果“卷”超过一定大小,则在运行“ docker-compose build”时出现以下错误:

  • 错误:无法通过http + docker:// localunixsocket连接到Docker守护进程-它正在运行吗? 如果它位于非标准位置,请使用DOCKER_HOST环境变量指定URL。

使用sudo运行命令开始生成映像,但是不必依赖sudo进行自动化是很好的。

在我的实例中,似乎出现此问题的原因是将我的卷目录传递到了构建上下文中。 我猜对非sudo用户的构建上下文大小有一些限制吗? 还是超时?

因此,在我的实例中,解决方法是移动卷目录,或将其添加到.dockerignore,以解决此错误消息的这种特殊形式。

cd / var /运行
须藤chmod 777 docker.sock
sudo服务docker start
docker运行hello-world
您好,Docker!
此消息表明您的安装似乎正常工作。

解决了问题:)

用须藤解决

如果此处所说的所有内容均无效,请重新安装docker。 它为我工作。

根据我的经验,无需重新启动计算机,这对您在生产环境中很有帮助-在sudo usermod -aG docker $USER ,注销并重新登录。这应该将新的用户组分配传递给具有以下功能的任何程序或应用:需要它。

如果未成功,则@praveenbaliga的回应3注释(如果权限开头不正确或您处于暂存环境中)将在rootdocker组成员有权访问docker.sockchmod 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成为root用户,然后正常运行docker-compose

使用此链接可解决对我有用的问题。 我有同样的问题,但现在工作正常

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

运行docker时出现相同的错误消息。
通过将我自己添加到用户组“ docker”来解决

尝试运行以下命令将您自己添加到该组
usermod -aG docker ${USER}

或者,您可以运行以下命令来找出您所属的组
groups $USER

然后重启电脑

该线程很有帮助。

我输入了同样的问题。 相反,我在命令行开头添加了sudo,它解决了!

赶紧跑;

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

这个为我工作。 不知道为什么将$ USER添加到docker group不能解决问题。
编辑:事实证明,docker服务每次重新加载都会重新生成/var/run/docker.sock 。 每次重启docker时,您都需要重做上述技巧(不会发生太多,是吗?)

此页面是否有帮助?
0 / 5 - 0 等级