我在Xubuntu 22.04安装了Docker Desktop,现在,如果我尝试执行docker compose up
或docker build
,我会收到以下错误:
Cannot connect to the Docker daemon at unix:///home/dario/.docker/desktop/docker.sock. Is the docker daemon running?
我已经尝试过systemctl enable docker
和systemctl 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
,现在一切都很好。