【问题标题】:How would I mount a Docker volume to WSL2?如何将 Docker 卷挂载到 WSL2?
【发布时间】:2021-08-02 06:36:45
【问题描述】:

我安装了 Docker for Windows 并切换到使用 WSL 2 Linux 容器(没有任何 Linux 知识)。

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

我该怎么做?

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

【问题讨论】:

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


    【解决方案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 Desktop 后端用于存储图像和卷(以及可能的其他 Docker 工件)。

    可以检查此 WSL 实例的内容。详情请见this answer

    【讨论】:

    • 非常丰富的答案!我在文档中找不到与此相关的任何内容。你介意我用你的信息更新 Docker for Windows 文档并从中创建一个 PR 吗?
    • 完全不介意 - 很高兴贡献,很高兴它帮助了你!
    • 如果您不介意,我还有一个问题:在您的 bind mount 示例中,您建议绑定到 WSL 共享 (--volume "\\wsl$\...)。这会是什么原因?我猜想绑定到本地文件夹将是可行的方法(例如--volume "C:\Temp\:/data")。这两种方法有什么区别?
    • 绑定到 NTFS 驱动器上的某些东西似乎首先是您的问题,因为 Docker 警告您性能会受到影响,对吧? \\wsl$\ 伪共享在 WSL2 实例中的路径中传递,其中 ext4 文件系统比 NTFS 快得多(超过一个数量级)(参见 this searchthis result)。此外,当通过\\wsl$\ 共享时,WSL 会自动映射它——尝试使用wsl --cd \\wsl$\Ubuntu\ 启动,WSL 将在其/ 中启动。
    • 我现在创建了一个关于在 Docker for Windows 中安装卷的文档:deploy-preview-12877--docsdocker.netlify.app/docker-for-windows/… 并创建了一个拉取请求:github.com/docker/docker.github.io/pull/12877。虽然它需要审查...
    猜你喜欢
    • 1970-01-01
    • 2021-07-16
    • 2021-10-26
    • 1970-01-01
    • 2021-09-17
    • 2017-11-08
    • 1970-01-01
    • 1970-01-01
    • 2021-06-02
    相关资源
    最近更新 更多