【问题标题】:Docker - Couldn't connect to Docker daemonDocker - 无法连接到 Docker 守护程序
【发布时间】:2016-04-16 12:39:52
【问题描述】:

我开始买了

ERROR: Couldn't connect to Docker daemon - you might need to run `docker-machine start default`. 

但我没有使用docker-machine(虽然我安装了 0.5.2 版)

我直接在我的Ubuntu 14.04 LTSDocker 1.11.0Docker-compose 1.7.0 中运行docker。

为什么会出现这个错误?我应该卸载 docker-machine 因为我不使用它还是升级它?是其他问题吗?

【问题讨论】:

  • docker 守护进程真的在运行吗?
  • 是的,否则它不会启动 docker compose。它运行了,但看起来由于某种原因它崩溃了
  • 我将 docker-machine 升级到 0.7.0 版本。让我看看它是否会再次发生
  • 升级 docker-machine 没有帮助。我做sudo service docker status 并且即使在错误消息之后docker仍在运行。如何卸载 docker-machine?
  • 同时我要试试这个stackoverflow.com/a/33814844/977622

标签: ubuntu docker ubuntu-14.04 docker-compose docker-machine


【解决方案1】:

如果没有更多信息,很难知道会发生什么。但在 Docker Machine 之外,错误通常是因为您的用户不在 docker 组中。默认情况下,该套接字不允许root以外的用户使用该套接字。

您可以在https://docs.docker.com/engine/installation/linux/ubuntulinux/#create-a-docker-group 找到更多信息和解决方案。但通常您只需使用命令sudo usermod -aG docker $USER 将您的用户添加到docker 组。

但是,您需要注意,这相当于向该用户授予 root 权限。您允许该用户运行 Docker 容器,这些容器可以以 root 身份挂载文件夹。

【讨论】:

  • 我的用户已经在 docker 组中...当我运行 docker-machine ls 时没有运行 vm 但有一个显示错误 machine does not exist 但它来自另一个项目。我可以卸载 docker-machine 吗?我该怎么做?
  • 顺便说一句,我正在运行docker-compose run --rm web bash,然后我在里面运行 python selenium,它启动正常,但有时它会因这个错误而崩溃并杀死我所有的容器。
  • 这没有任何意义。该错误是针对尝试连接到守护程序的客户端。当您已经为容器命名空间打开了一个外壳时,我看不出该错误会如何发生。有关更多信息,请参阅我对您的问题的评论。给定的信息是缺乏的,还不太有意义......
【解决方案2】:

我遇到了同样的问题,必须将 docker docker.sock docker.pid 的所有权从 root:root 更改为位于 /var/run/$USER:docker ,因为这是在尝试连接时被拒绝的权限Docker 守护进程。更多有用信息来自here

授予非 root 访问权限

docker 守护进程始终以 root 用户身份运行,并且由于 Docker 版本 0.5.2,docker 守护进程绑定到 Unix 套接字而不是 TCP 端口。默认情况下,Unix 套接字由用户 root 拥有,因此,默认情况下,您可以使用 sudo 访问它。

从 0.5.3 版本开始,如果您(或您的 Docker 安装程序)创建一个名为 docker 的 Unix 组并向其添加用户,那么 docker 守护进程将使 Unix 套接字的所有权可以由 docker 组读取/写入守护进程启动。

【讨论】:

  • docker.sock的默认用户组是docker。但它可以被 -G 标志覆盖。为什么docker.sock 的所有者组是 root?
猜你喜欢
  • 2021-10-12
  • 2014-03-19
  • 1970-01-01
  • 1970-01-01
  • 2018-11-07
  • 2016-04-04
  • 2020-06-03
  • 1970-01-01
  • 2021-04-04
相关资源
最近更新 更多