安装Docker Desktop后,Docker在Ubuntu中不再工作



我在Xubuntu 22.04安装了Docker Desktop,现在,如果我尝试执行docker compose updocker build,我会收到以下错误:

Cannot connect to the Docker daemon at unix:///home/dario/.docker/desktop/docker.sock. Is the docker daemon running?

我已经尝试过systemctl enable dockersystemctl start docker,实际上systemctl status docker的输出是:

● docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset>
Active: active (running) since Wed 2022-08-10 11:42:12 CEST; 1min 56s ago
TriggeredBy: ● docker.socket
Docs: https://docs.docker.com
Main PID: 1671 (dockerd)
Tasks: 12
Memory: 125.7M
CPU: 433ms
CGroup: /system.slice/docker.service
└─1671 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/cont>

即使我用systemctl stop docker停止docker,转而用dockerd运行它,我也会遇到同样的问题。文件所有权也可以,我的用户在docker组中。Docker是最后一个版本,是通过快照安装的。我真的不明白出了什么问题。

我终于明白出了什么问题。

我意识到,大多数教程都告诉我尝试更改/var/run/docker.sock的权限,这意味着默认情况下docker指向该文件。

但我的docker输出是:Cannot connect to the Docker daemon at unix:///home/dario/.docker/desktop/docker.sock

所以我猜测docker.service守护进程可能仍然指向第一个,而docker命令正在寻找后一个

因此,我按照本指南编辑了/etc/init/docker.conf/lib/systemd/system/docker.socket,并将每个文件中的/var/run/docker.sock替换为/home/dario/.docker/desktop/docker.sock

我的猜测是对的,现在Docker的工作很有魅力!

编辑:

我不得不重新安装操作系统,这个错误再次出现。我解释的解决方案已经不够了,我不得不按照这个答案来解决它。

编辑#2:

事实上,使用docker-compose -H unix:///var/run/docker.sock mycontainer是有效的,但它有点过于冗长,使其永久化的指令对我来说不起作用

现在我找到了另一个快速解决方案。看看docker context ls的输出,在我的例子中是:

NAME                TYPE                DESCRIPTION                               DOCKER ENDPOINT                                  KUBERNETES ENDPOINT   ORCHESTRATOR
default             moby                Current DOCKER_HOST based configuration   unix:///var/run/docker.sock                                            swarm
desktop-linux *     moby                                                          unix:///home/dario/.docker/desktop/docker.sock                         

desktop-linux后面的星号表示它是当前正在使用的Docker上下文。在我的情况下,切换到default就可以了。

这不是一个巧妙的解决方案,但我让我的电脑在启动时运行docker context use default,现在一切都很好。

最新更新