【问题标题】:Couldn't connect to Docker daemon at http+docker://localhost with docker-compose无法使用 docker-compose 在 http+docker://localhost 连接到 Docker 守护进程
【发布时间】:2018-12-01 10:17:50
【问题描述】:

我有一个想要在 Apache HTTP Docker 容器上运行的 React 应用程序。

所以我创建了一个与sudo docker buildsudo docker run <name> 一起使用的Dockerfile

FROM httpd:2.4
COPY ./dist/ /usr/local/apache2/htdocs/

我创建了一个 docker-compose.yml

version: '3'
services:
  frontend:
    build: .
    ports:
     - "8080:80"
    container_name: frontend

但是当我运行sudo docker-compose build 时,我得到了这个错误:

错误:无法在 http+docker://localhost 连接到 Docker 守护进程 - 正在运行吗?

如果它位于非标准位置,请指定带有 DOCKER_HOST 环境变量。

有什么问题?

【问题讨论】:

    标签: docker docker-compose dockerfile docker-container


    【解决方案1】:

    检查您的权限,以下命令解决了我的问题:

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

    当您尝试以非超级用户身份启动 docker 并且无法访问它自己的套接字时会发生这种情况。

    【讨论】:

      【解决方案2】:

      使用 sudo 运行:

      sudo docker-compose up -d

      【讨论】:

      【解决方案3】:

      我的解决方案是简单地重新启动机器(EC2 Amazon Linux2)。 用权限和组追逐我的尾巴 30 分钟,但简单的重启就可以了。

      【讨论】:

      • 感谢您的建议。我也追了几个小时,重新启动服务器后它开始工作。为什么任何教程或自述文件都没有说重启?
      • 谢天谢地,我看到了你的回答。我花了最后 2 个小时试图找出问题所在。也只需要重新启动。非常感谢。
      【解决方案4】:

      在运行任何 Docker 命令之前,您需要在主机上运行 Docker 守护进程:

      sudo systemctl start docker
      

      【讨论】:

      • 它正在运行。我可以运行任何 Docker 命令,例如psbuild 等。我现在可以在另一个项目中运行 docker-compose。但是当我在这个 HTTPD 项目中只运行 docker-compose 时,我得到了这个错误。
      • 我明白了。这可能是权限问题。见here
      • Jenkins 环境中的相同症状。 docker 命令有效,但 docker-compose 失败并显示主题中的消息。作为来自 CLI 的用户 jenkins,我可以执行所有 docker 命令(通过 /var/run/docker.sock),但从 Jenkins 作业中调用 docker-compose 会导致问题。
      • @rhoerbe 您是如何解决 Jenkinsfile 问题的?
      【解决方案5】:

      我有这个,发现我的用户不在docker 组中,所以没有权限。

      您可以通过运行groups 进行检查。如果docker 不在打印的列表中,这可能是您的问题。

      您可以将您的用户添加到docker 组:

      sudo usermod -aG docker yourUserName
      

      将我的用户添加到 docker 组后,我必须注销并重新登录才能使更改生效。

      编辑:我在全新安装时执行此操作,发现需要重新启动才能正常工作。如果您不确定失败的原因,请尝试重新启动!

      【讨论】:

        【解决方案6】:

        我遇到了同样的错误,但在我的情况下,这是一个无效的 docker-compose 文件:图像名称是 my_app:。例如

          my_app:
            build:
              context: .
              dockerfile: ./my_app/Dockerfile
            image: my_app:
        

        这个错误非常没有帮助,我花了很长时间才弄清楚,因为它没有像这样明确地写在文件中,而是: 之后的部分是一个空变量。

        把这个留在这里,以防其他人偶然发现这个问题。

        【讨论】:

          【解决方案7】:

          对我有帮助

          export DOCKER_HOST=127.0.0.1:2375
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2016-04-04
            • 2020-06-03
            • 2014-03-19
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2023-03-04
            • 2018-11-10
            相关资源
            最近更新 更多