我在 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:
运行命令
docker context ls
来发现新主机。复制与 desktop-Linux 上下文相对应的 DOCKER ENDPOINT
通过选择以下两种方法之一来设置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 主机。
这可以通过两种方式完成:
- 通过使用环境变量,如上面TLDR部分所述。
- 通过将主机地址传递给 docker-compose 命令:
docker-compose -H {your docker endpoint} COMMAND
关于linux - 在 Debian 11 上安装 Docker Desktop 后 docker-compose 停止工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72388122/