我刚刚在 Windows 上使用 Docker 尝试 WSL 2,但在安装卷时遇到了问题:
version: "3.7"
services:
node:
build: .
container_name: node
hostname: node
volumes:
- ./app:/app
stdin_open: true
容器构建并启动良好,我可以使用 docker exec 很好地访问它,但是/app
容器内的文件夹未绑定到我的笔记本电脑app
文件夹。然而,正确的路径实际上已正确安装在正在运行的容器上:
(这里我在主机上执行 pwd ,看看它是否与容器上安装的内容完美匹配)
➜ app pwd
/mnt/c/Users/willi/devspace/these/app
这是 portainer 的屏幕,告诉我什么路径安装在容器中的哪个位置,并且所有内容都匹配。
我在主机上的应用程序文件夹中创建的文件在容器的应用程序文件夹中不可见,反之亦然。这很奇怪,我不知道如何调试它。
补充信息:
- Windows 10 专业版 10.0.19041
- 适用于 Windows 的 Docker 版本:2.3.0.4
-
docker version
WSL 中的输出:2012 年 3 月 19 日
-
docker-compose version
:1.26.2
Thanks
正如 @Pablo 提到的,最佳实践似乎是使用 WSL 文件系统来映射卷。
看看有关 WSL2 的 Docker 文档 https://docs.docker.com/docker-for-windows/wsl/#best-practices:
最佳实践
- To get the best out of the file system performance when bind-mounting files:
- 存储绑定安装到 Linux 容器中的源代码和其他数据(即,
docker run -v <host-path>:<container-path>
)在 Linux 文件系统中,而不是在 Windows 文件系统中。
- 如果原始文件存储在 Linux 文件系统中,Linux 容器仅接收文件更改事件(“inotify 事件”)。
- 当文件从 Linux 文件系统绑定安装而不是从 Windows 主机远程安装时,性能要高得多。因此避免
docker run -v /mnt/c/users:/users
(where /mnt/c
从 Windows 安装)。
- 相反,从 Linux shell 使用类似的命令
docker run -v ~/my-project:/sources <my-image>
where ~
由 Linux shell 扩展为$HOME
.
- 如果您对 docker-desktop-data VHDX 的大小有疑问,或者需要更改它,请查看 Windows 中内置的 WSL 工具。
- 如果您担心 CPU 或内存使用情况,可以配置分配给 WSL 2 实用程序 VM 的内存、CPU、交换大小的限制。
- 为了避免与在 Docker Desktop 上使用 WSL 2 发生任何潜在冲突,您必须在安装 Docker Desktop 之前卸载直接通过 Linux 发行版安装的任何早期版本的 Docker Engine 和 CLI。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)