我尝试docker run hello-world
在 debian bullseye 机器上执行,在该机器上我没有 root 用户权限,但可以使用sudo
。
我按照 docker 文档安装了 docker (v19.03.13) sudo
。docker 可以启动,sudo systemctl start docker
并且sudo systemctl status docker
服务按预期运行。sudo systemctl status docker.socket
看起来也很正常。
我docker.sock
在 找到一个文件/var/run/
。
现在,当尝试运行docker run hello-world
(不sudo
!)时,我收到一条错误消息:
docker: Cannot connect to the Docker daemon at unix:///home/<myuser>/.docker/run/docker.sock. Is the docker daemon running?.
看起来,docker 服务正在错误的目录中寻找 docker.sock。
我已经尝试过以下方法,但是没有效果:
sudo systemctl stop/start/restart docker
(我在有关此问题的讨论中找到了标准答案)- 将我的用户添加到docker组:
sudo usermod -aG docker $USER
。命令less /etc/group | grep docker
产生docker:x:999:myUserName
ls -la /var/run/docker.sock
--> (由https://unix.stackexchange.com/a/279785/335075srw-rw---- 1 root docker 0 Jul 17 17:48 /var/run/docker.sock
建议)unset DOCKER_HOST
(例如https://stackoverflow.com/a/69674630/1552080)。sudo mount -t cgroup -o none,name=systemd cgroup /sys/fs/cgroup/system
(这种方法成功过一次,但在我退出并再次登录后就失效了)
我能做的就是跑步sudo docker run hello-world
。
听起来你以某种方式为用户设置了替代的 docker 上下文。也许你正在尝试以另一种方式安装 docker,或者无意中输入了某些内容。
你可以使用以下方法检查
Docker 文档包含有关创建新上下文和选择上下文的说明:
最后,我找到了这个问题的根本原因。我在
.bashrc
显式设置路径中找到了一个条目docker.sock
在.bashrc中找到:
变成
我不知道这是否会导致其他问题,但乍一看,它使我免于
unset DOCKER_HOST
登录。