微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决docker 挂载文件夹不适用于带有 WSL2

我已经在安装了 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

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

解决方法

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。