docker 挂载文件夹不适用于带有 WSL2

时间:2021-01-02 09:09:34

标签: windows docker windows-subsystem-for-linux wsl-2 mount-point

我已经在安装了 WSL2 并与最新 Docker 版本集成的 Windows 10 机器上尝试了 this example。按照示例中的步骤并下载 linux 子系统中的代码后,我可以构建映像并运行容器。当我在 Windows 10 上运行的浏览器上浏览到该网站时,该网站也可以在浏览器上使用。 但是,当我在容器中创建文件或文件夹时,同样不会反映在主机文件系统中,在这种情况下是 linux子系统。同样,当我使用 ls 命令时,在主机 linux 子系统中创建的文件在容器的 cli 中看不到。

我运行此命令以确认文件夹已安装,其中 44711fc95366 是我的容器 ID

docker inspect -f "{{ .Mounts }}" 44711fc95366

这给出了这样的输出:

<块引用>

[{bind /home/userlab1/my-proj/getting-started/app /usr/src/app true rprivate}]

如果上面表达的挂载点是正确的,我应该能够在路径/home/userlab1/my-proj/getting-started/app上的主机子系统中创建一个文件或文件夹,并且能够在容器中的/usr/src/app路径上看到它,对吗?

docker 镜像已创建并从 linux 子系统命令行运行,如下所示:

docker run -it -v ~/my-proj/getting-started/app:/usr/src/app -p 3001:3000 --name cntr-linux-todo
img-todo:in-linux

当应用程序运行时,容器中更新的文件不会反映在从容器运行的网站上,也不会在主机子系统中看到容器中创建的新文件/文件夹,反之亦然。我错过了什么?

1 个答案:

答案 0 :(得分:1)

由于您使用的是 Windows 版本的 docker,它无法从 WSL 看到文件/文件夹。

您可以将 ~/my-proj 移动到 C:\Users\user20358,然后从那里挂载:

-v 'C:\Users\user20358\my-proj\getting-started\app:/usr/src/app'