WSL 错误-使用 mount -a 处理 fstab 失败

WSL 错误-使用 mount -a 处理 fstab 失败

我安装了 WSL(适用于 Linux 的 Windows 子系统)来使用 Docker。我还在 WSL 中安装了 Ubuntu Linux。这是我的 WSL 列表:

PS C:\Windows\system32> wsl -l

Windows Subsystem for Linux Distributions:
docker-desktop-data (Default)
docker-desktop
Ubuntu-22.04

为了配置我的 Docker 卷,我想在docker-desktop-data发行版中运行一些 Linux 命令,但是在尝试访问 shell 时出现此错误:

PS C:\Windows\system32> wsl
Processing fstab with mount -a failed. 
<3>WSL (56) ERROR: CreateProcessEntryCommon:358: getpwuid(0) failed 2  
<3>WSL (56) ERROR: CreateProcessEntryCommon:362: getpwuid(0) failed 2
<3>WSL (56) ERROR: CreateProcessEntryCommon:570: execvpe /bin/sh failed 2
<3>WSL (56) ERROR: CreateProcessEntryCommon:579: Create process not expected to return   

我的 Docker 守护程序和 Ubuntu 运行良好,但我不知道如何在任何 WSL 发行版中运行命令。

答案1

您无法访问的原因docker-desktop-data很简单——你不应该访问!它里面没有可以启动的 shell 或可执行文件,所以 WSL 实际上没有什么可做的跑步当您要求它开始“分发”时。

docker-desktopdocker-desktop-data分布由管理Docker Desktop 并不适合最终用户使用。甚至还有WSL Github 上的提案有一种方法可以默认向用户隐藏这些内容。

我建议您使用以下方法将事物恢复到“正常”状态:

wsl --set-default Ubuntu-22.04
  • docker-desktop-data简单来说就是贮存对于 Docker 来说。这是存储 Docker 卷、图像和容器的地方。Docker 会帮你管理这些。如果你觉得需要对这些数据进行一些操作,docker无法处理的事情,那么我建议你单独问一个问题(并参见XY问题)。

  • docker-desktop包含所有 Docker 可执行文件和套接字的发行版。然后将它们链接到您的其他发行版(例如 Ubuntu),以便您可以运行docker在其中运行命令(以及从 PowerShell 和 CMD 运行)。当您进入此分布,实际上没有理由这样做。请记住,您对此分布所做的任何更改:

    • 可能会破坏 Docker Desktop 功能
    • 当 Docker Desktop 升级时,至少会被重置,因为新的docker-desktop发行版将会安装在旧的发行版上。

虽然不建议这么做(因为很容易破坏东西),但是你至少docker-desktop-data当它们被安装到发行版中时,它们的内容如下docker-desktop

wsl ~ -d docker-desktop

cd /mnt/host/wsl/docker-desktop-data
find

答案2

这个命令对我有用

wsl --set-default docker-desktop

相关内容