docker-在 Debian 11 上 Docker 桌面安装后,compose 停止工作

docker-compose stop working after Docker Desktop installation on Debian 11

我在我的 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 Compose V1/V2 兼容模式”General 部分 Docker 桌面设置。

TLDR:

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

  2. 复制DOCKERENDPOINT对应desktop-Linux上下文

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

    • 打开一个终端并执行export DOCKER_HOST={your docker endpoint}(这仅对当前终端会话有效,系统重启时您将丢失配置)
    • 按照 instructions 设置永久环境变量(你必须使用 DOCKER_HOST 作为变量名和你自己的 DOCKER ENDPOINT 作为值,而不是答案中用作示例的值)

长答案和解释:

Docker桌面在Linuxruns on a virtual machine上使用docker组成V2 而不是 docker-compose(使用它的命令是不带连字符的 docker compose)。

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

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

如果要使用 Docker 引擎而不是 Docker 桌面,请将 context can be switched 设为默认值。这样您的本地 docker-compose 将像以前一样工作。

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

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

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