WSL2 下的 Docker 客户端在没有 sudo 的情况下无法工作

Pro*_*sov 6 docker windows-subsystem-for-linux wsl-2

在 WSL2 (Ubuntu 20.04) 上,我试图连接到在 Windows 上运行的 Docker 守护进程。

$ docker ps
Cannot connect to the Docker daemon at tcp://localhost:2375. Is the docker daemon running?
(exit code 1)

$ sudo docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
(exit code 0)
Run Code Online (Sandbox Code Playgroud)

为什么它可以与 sudo 一起工作,但没有 sudo 就不行?如何在没有 sudo 的情况下使其工作?

我已经做好了

$ sudo usermod -aG docker $USER 
Run Code Online (Sandbox Code Playgroud)

运行成功,但没有帮助解决问题。

我也重新启动了很多次,这没有帮助。

小智 11

这个奇怪的解决方案 - 但继续尝试:

取消设置 DOCKER_HOST

如果可行,您可以返回并注释掉 .bashrc 文件中的“export DOCKER_HOST=tcp://localhost:2375”,从而使修复永久化。我认为这与 WSL 2 与 WSL 1 中 docker 的配置方式有关,但 Docker 从未更新他们的文档来反映这一点。


Tar*_*mar 10

对我来说,以下命令有效(按顺序执行它们)

sudo addgroup --system docker
sudo adduser $USER docker
newgrp docker
# And something needs to be done so $USER always runs in group `docker` on the `Ubuntu` WSL
sudo chown root:docker /var/run/docker.sock
sudo chmod g+w /var/run/docker.sock
Run Code Online (Sandbox Code Playgroud)

参考:https://github.com/rancher-sandbox/rancher-desktop/issues/1156#issuecomment-1017042882