我如何将 Docker 卷挂载到 WSL2?
How would I mount a Docker volume to WSL2?
我为 Windows 安装了 Docker 并切换到使用 WSL 2 Linux 容器(没有任何 Linux 知识)。
当我 运行 一个容器,将 Docker 卷安装到 Windows 文件夹时,我收到一条警告消息,告诉我我应该安装 Docker WSL 2 分布的体积。
我该怎么做?
当我在 PowerShell 中执行 Docker 时,我似乎无法访问 WSL 2 文件系统。
如果您真的想将文件夹用作卷,您可以使用 \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,卷将存储在您看到的 docker-desktop-data WSL 实例中使用 wsl -l -v
命令。这是一个无法启动的“黑匣子”WSL 实例; Docker 桌面后端仅使用它来存储图像和卷(可能还有其他 Docker 工件)。
您可以检查此 WSL 实例的内容。有关详细信息,请参阅 this answer。
我为 Windows 安装了 Docker 并切换到使用 WSL 2 Linux 容器(没有任何 Linux 知识)。
当我 运行 一个容器,将 Docker 卷安装到 Windows 文件夹时,我收到一条警告消息,告诉我我应该安装 Docker WSL 2 分布的体积。
我该怎么做?
当我在 PowerShell 中执行 Docker 时,我似乎无法访问 WSL 2 文件系统。
如果您真的想将文件夹用作卷,您可以使用 \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,卷将存储在您看到的 docker-desktop-data WSL 实例中使用 wsl -l -v
命令。这是一个无法启动的“黑匣子”WSL 实例; Docker 桌面后端仅使用它来存储图像和卷(可能还有其他 Docker 工件)。
您可以检查此 WSL 实例的内容。有关详细信息,请参阅 this answer。