Ali*_*ian 5 windows-subsystem-for-linux
我安装了 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
Run Code Online (Sandbox Code Playgroud)
为了配置我的 Docker 卷,我想在发行版中运行一些 Linux 命令docker-desktop-data,但在尝试访问 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
Run Code Online (Sandbox Code Playgroud)
我的 Docker 守护进程和 Ubuntu 工作正常,但我不知道如何在任何 WSL 发行版中运行命令。
您无法访问的原因docker-desktop-data很简单——您不应该访问!它内部没有可以启动的 shell 或可执行文件,因此当您要求 WSL 启动“分发”时,它实际上没有任何东西可以运行。
和docker-desktop都是由 Docker Desktop 管理的docker-desktop-data发行版,并不适合最终用户使用。WSL Github 中甚至有一项提案,要求默认情况下对用户隐藏这些内容。
我建议您通过以下方式将事情恢复到“正常”状态:
wsl --set-default Ubuntu-22.04
Run Code Online (Sandbox Code Playgroud)
docker-desktop-data简单地用作Docker 的存储。这是存储 Docker 卷、映像和容器的位置。Docker 为你管理了这个。docker如果您觉得需要对命令无法处理的数据执行某些操作,那么我建议您就此提出一个单独的问题(并参见XY Problem)。
docker-desktop包含包含所有 Docker 可执行文件和套接字的发行版。然后将它们链接到您的其他发行版(例如 Ubuntu),以便您可以docker在那里运行命令(以及从 PowerShell 和 CMD)。虽然您可以进入此发行版,但实际上没有理由这样做。请记住,您对此发行版所做的任何更改:
docker-desktop发行版将安装在旧的发行版上。虽然不推荐(因为你很容易破坏东西),但你至少可以看到docker-desktop-data它们安装到发行版中的内容docker-desktop:
wsl ~ -d docker-desktop
cd /mnt/host/wsl/docker-desktop-data
find
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11744 次 |
| 最近记录: |