如何将 Docker 卷挂载到 WSL2?

时间:2021-05-11 21:17:04

标签: windows-subsystem-for-linux docker-for-windows

我为 Windows 安装了 Docker,然后改用 WSL 2 Linux 容器(没有任何 Linux 知识)。

当我运行容器并将 Docker 卷安装到 Windows 文件夹时,我收到一条警告消息,告诉我我应该将 Docker 卷安装到 WSL 2 发行版。

我该怎么做?

当我在 PowerShell 中执行 Docker 时,我似乎无法访问 WSL 2 文件系统。

1 个答案:

答案 0 :(得分:1)

如果您真的想将文件夹用作卷,您可以使用 \\wsl$\<distroname> 伪共享将 docker(在 PowerShell 下)指向 WSL 文件系统。例如:

docker run -ti --volume "\\wsl$\Ubuntu\var\docker\volumes\alpine_persistent_data:/data" --rm alpine

给定一个名为“Ubuntu”的发行版(最常见的默认 WSL 安装),它将创建和使用 \var\docker\volumes\alpine_persistent_data 作为卷。

也就是说,我建议为此使用 Docker 管理的卷而不是目录。请参阅 Docker volumes doc。类似的东西:

# Optional , since the volume will be created on first use anyway
docker volume create alpine_persistent_data

docker run -ti --volume alpine_persistent_data:/data --rm alpine

# or
docker run -ti --mount source=alpine-persistent-data,target=/data --rm alpine

# Cleanup
docker volume rm alpine-persistent-data

使用 Docker Desktop for Windows,卷将存储在您使用 wsl -l -v 命令看到的 docker-desktop-data WSL 实例中。这是一个无法启动的“黑匣子”WSL 实例;它只是由 Docker 桌面后端用于存储图像和卷(可能还有其他 Docker 工件)。

可以检查此 WSL 实例的内容。有关详细信息,请参阅 this answer