Docker Desktop与WSL2无法启动

5
突然间我的 Docker 和 WSL2 停止工作了。现在我遇到以下问题:
$ docker ps
Error response from daemon: dial unix /mnt/wsl/docker-desktop/shared-sockets/guest-services/docker.sock: connect: no such file or directory

注: Docker 在 Windows 上可用。

我尝试了以下方法,但都没有成功:

  • 重新安装 Docker Desktop。
  • 在 WSL 中重新安装 Docker。
  • 手动创建 .sock 文件。

版本

  • Docker Desktop 版本:2.3.0.3(45519)
  • WSL2 与 Ubuntu 18.04
PS C:\Users\ms> wsl -l -v
  NAME                   STATE           VERSION
* Ubuntu-18.04           Running         2
  docker-desktop-data    Running         2
  docker-desktop         Running         2

任何建议?

同样的问题,工作了几个小时后停止了,重新启动没有帮助。 - Chiptus
1
奇怪。如果你找到了解决方法,请告诉我。我还在研究中。 - felix001
请告诉我这是否有帮助:https://stackoverflow.com/questions/66026771/my-docker-is-failing-to-launch-on-my-windows-10-pro/66036200#66036200 - Francesco Mantovani
6个回答

9
不需要安装Docker桌面版,它只会在Windows上产生问题并使事情变得更慢。如果您按照以下方式安装Docker,则再也不会遇到该问题:
# INSTALL DOCKER PACKAGE
sudo -E apt update && sudo apt upgrade -y
sudo -E apt-get -qq install docker.io -y
# DOCKER DAEMON STARTUP (Substitute .bashrc for .zshrc or any other shell you use)
rcfile=~/.bashrc
echo '# Start Docker daemon automatically when logging in if not running.' >> $rcfile
echo 'RUNNING=`ps aux | grep dockerd | grep -v grep`' >> $rcfile
echo 'if [ -z "$RUNNING" ]; then' >> $rcfile
echo '    sudo dockerd > /dev/null 2>&1 &' >> $rcfile
echo '    disown' >> $rcfile
echo 'fi' >> $rcfile
# ENABLE CURRENT USER AS SUDO FOR DOCKER
echo $USER' ALL=(ALL) NOPASSWD: /usr/bin/dockerd' | sudo EDITOR='tee -a' visudo
sudo usermod -aG docker $USER
# REBOOT VM MACHINE
wsl.exe --shutdown

安装完成后,打开新的Ubuntu终端,现在它已经可以使用了。您可以运行任何docker镜像,例如:
docker run hello-world

或者

docker run -it ubuntu

1
最佳答案谢谢!!!桌面负担太大,让我十分困扰! - lacostenycoder

1

我知道这可能听起来非常愚蠢,但你是否重新启动了电脑?我遇到过类似的问题,当我重新启动电脑后,它就正常工作了。


1
是的,多次。 - felix001

0

尝试了多种方法,包括修复Ubuntu、重置Ubuntu等,但对我有效的是:

  • 备份文件后卸载Ubuntu
  • 卸载Docker桌面版
  • 重新安装最新版本的Ubuntu 20.20
  • 重新安装Docker桌面版

0

尝试关闭Windows上的所有防火墙,然后退出Docker桌面版并重新打开它

或者

打开PowerShell并运行New-NetFirewallRule -DisplayName "WSL" -Direction Inbound -InterfaceAlias "vEthernet (WSL)" -Action Allow,来源:https://visualgdb.com/documentation/wsl2/

或者

enter image description here


-1
我在PowerShell中找到了以下内容: wsl --list --verbose docker-desktop-data已停止。
原因是docker-desktop决定使用Windows容器,我不知道为什么。

那么如何解决这个问题呢? - Matt

-1
如果您使用Windows操作系统,请在命令提示符(cmd)中尝试以下两个命令: 执行完这两个命令后,请重新启动计算机。

如果您能添加平台/或系统架构,那将更有帮助。 - Yash Jagdale

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接