linux - 在 Debian 11 上安装 Docker Desktop 后 docker-compose 停止工作

标签 linux docker docker-compose debian docker-desktop

我在 Debian 11 计算机上安装了适用于 Linux 的 Docker Desktop。

安装后,我无法使用 docker-compose 或 laravel sail。 错误是:

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

If it's at a non-standard location, specify the URL with the DOCKER_HOST environment variable.

未设置 DOCKER_HOST 环境变量。

docker CLI 仍然正常工作。

有人可以帮助我吗? 提前致谢

最佳答案

编辑:

最快、更干净的方式:

在 Docker 桌面设置的常规部分中选中“启用 Docker Compose V1/V2 兼容模式”

TLDR:

  1. 运行命令docker context ls来发现新主机。

  2. 复制与 desktop-Linux 上下文相对应的 DOCKER ENDPOINT

  3. 通过选择以下两种方法之一来设置DOCKER_HOST环境变量:

    • 打开终端并执行 export DOCKER_HOST={您的 docker 端点}(这仅对当前终端 session 有效,您将在系统重新启动时丢失配置)
    • 关注 instructions设置永久环境变量(您必须使用 DOCKER_HOST 作为变量名称,并使用您自己的 DOCKER ENDPOINT 作为值,而不是答案中用作示例的值)

长答案和解释:

Linux 上的 Docker 桌面 runs on a virtual machine并使用docker compose V2而不是docker-compose(使用它的命令是docker compose,不带连字符)。

为了避免它屏蔽本地计算机上的 docker 引擎服务并创建一个新的 context .

由于本地 Docker 服务已被屏蔽,因此它不再在本地计算机上运行。

context can be switched如果您想使用 Docker Engine 而不是 Docker Desktop,请使用默认值。这样你的本地 docker-compose 将像以前一样工作。

另一种方法是将本地 docker-compose 连接到新虚拟机上的 Docker Desktop 主机。

这可以通过两种方式完成:

  1. 通过使用环境变量,如上面TLDR部分所述。
  2. 通过将主机地址传递给 docker-compose 命令:docker-compose -H {your docker endpoint} COMMAND

关于linux - 在 Debian 11 上安装 Docker Desktop 后 docker-compose 停止工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72388122/

相关文章:

python - 在 linux 机器上检测 python 3 中按键的最简单方法是什么?

linux - 通过 http 的 svn 凭证 [Linux]

ruby-on-rails - 用户身份认证失败

linux - 自定义后如何调试Shell命令

docker - 如何使用 cookiecutter-django 修复 ACME 证书质询时出现 "Connection refused"错误

linux - 探索 Docker 容器的文件系统

postgresql - 如何使postgres在容器的新暴露端口(不是5432)上监听?

postgresql - Docker-compose postgresql密码验证失败

docker - 如何为 VueJs 应用程序构建 docker 文件

Docker Compose 网络 : Bridge driver with access to host machine