【问题标题】:Cannot connect to the Docker daemon when running with sudo使用 sudo 运行时无法连接到 Docker 守护程序
【发布时间】:2016-10-13 04:54:07
【问题描述】:

我的 Docker 服务已启动并正在运行。但是,当尝试通过sudo 运行 Docker 来使用 Docker 时,例如:

12:40:26/~ $ sudo docker pull fluxcapacitor/pipeline
Using default tag: latest

我收到以下错误:

Warning: failed to get default registry endpoint from daemon (Cannot connect to 
the Docker daemon. Is the docker daemon running on this host?). Using system 
default: https://index.docker.io/v1/
Cannot connect to the Docker daemon. Is the docker daemon running on this host?

请注意,我已经关注了Mac OS X sudo docker Cannot connect to the Docker daemon. Is the docker daemon running on this host?上的答案

如下:

docker-machine 启动默认

12:40:36/~ $ docker-machine start default
Starting "default"...
Machine "default" is already running.

docker ps

12:41:20/~ $ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

那么还需要做什么呢?

这是:

$ docker --version
Docker version 1.11.2, build b9f10c9

El Capitan.

docker-machine env default的输出

$ eval "$(docker-machine env default)"

$ docker-machine env default
export DOCKER_TLS_VERIFY="1"
export DOCKER_HOST="tcp://192.168.99.100:2376"
export DOCKER_CERT_PATH="/Users/macuser/.docker/machine/machines/default"
export DOCKER_MACHINE_NAME="default"

【问题讨论】:

  • @kenorb 你的错误是在meta上讨论meta.stackoverflow.com/questions/365735/…
  • 也相关:Docker can't connect to docker daemon,接受的答案与 'eval' 方法得到了相同的答案,但我知道这是针对 macOS,其他针对 Linux,但在分辨率方面是一样的。
  • 感谢您的解释,我误读了您的问题,因为 Docker 安装出现问题时会出现“无法连接到 Docker 守护程序”错误,因此从 Cask 重新安装它可能会有所帮助.但是在您的情况下,您的 Docker 安装很好,但问题与 sudo 有关,所以我已经澄清了您的帖子并撤回了投票。

标签: macos docker


【解决方案1】:

我也尝试过,但没有成功。

后来我在 AWS CLI 上尝试了这些步骤

$ sudo nano /etc/docker/daemon.json
{
"dns": ["8.8.8.8", "8.8.4.4"]
}
$ sudo service docker restart
$ docker pull hello-world

【讨论】:

    【解决方案2】:

    以下命令会导出一些后续 docker 命令使用的环境变量:

    eval "$(docker-machine env default)"
    

    但是,如果您使用 sudo 启动 docker,则 docker 可执行文件无法访问导出的环境变量。您可以通过将-E 标志传递给sudo 来使其工作,例如:

    sudo -E docker pull fluxcapacitor/pipeline
    

    但更简单的选择是使用没有 root 的 docker,例如:

    docker pull fluxcapacitor/pipeline
    

    【讨论】:

      【解决方案3】:

      我的 MAC 在尝试时遇到了同样的问题

      # eval "$(docker-machine env default)"
      

      收到此错误

      Error checking TLS connection: Error checking and/or regenerating the certs: There was an error validating certificates for host "192.168.99.100:2376": x509: certificate is valid for 192.168.99.101, not 192.168.99.100
      You can attempt to regenerate them using 'docker-machine regenerate-certs [name]'.
      

      要重新生成证书,请找出可用的 docker-machines;

      # docker-machine ls
      

      可用 docker 机器的输出(其他省略)

      NAME          ACTIVE   DRIVER       STATE     URL                         SWARM   DOCKER    ERRORS
      default       -        virtualbox   Running   tcp://192.168.99.100:2376           Unknown   Unable to query docker version: Get https://192.168.99.100:2376/v1.15/version: x509: certificate is valid for 192.168.99.101, not 192.168.99.100
      

      为这个默认的 docker-machine 生成证书

      # docker-machine regenerate-certs default
      

      然后将 docker-machine 环境设置为default docker-machine;

      # eval "$(docker-machine env default)"
      

      之后就可以正常使用了。

      【讨论】:

        【解决方案4】:

        你必须设置环境变量:

        eval "$(docker-machine env default)"
        

        更多信息here

        【讨论】:

        • 啊,是的,我忽略了在已执行的 OP 中提及。但是为了更好的衡量,它又做了一次。行为没有变化(同样的错误)
        • @javadba “docker-machine env default”的输出是什么?
        • @khattam 用该信息更新了 OP。
        • @khattam Cha ching。想写一个答案吗?
        • 我会投票赞成让讨论顺利进行,但 @khattam 会获得奖励。
        猜你喜欢
        • 2016-07-11
        • 1970-01-01
        • 2021-10-12
        • 2021-10-27
        • 1970-01-01
        • 1970-01-01
        • 2016-03-31
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多