为什么 Docker for Windows 在 WSL2 上运行缓慢?

3

我试图在 Docker for Windows (Windows 11) 上运行 Laravel 图像,经过配置后,每个页面加载需要几秒钟的时间(非常慢,绝对超出 Laravel 基准)。我正在使用 WSL2,并为虚拟机分配了本地(完整资源)。为什么它运行得如此缓慢?

我检查了资源分配情况,不应该是问题(50% 的内存和所有核心)。我有一台相当强大的机器。我尝试了重新安装和新的 Docker 镜像,并关闭了所有竞争任务。


你的 Docker 是否在 WSL 中运行?我曾遇到类似的问题,我使用了 docker-for-windowsdocker-desktop,它们会设置自己的 WSL 变体,并且可以正常运行。 - UnderDog
1个回答

3

简而言之:不要在WSL挂载上托管docker文件。要么使用非WSL docker,要么通过SSH部署到WSL本地文件系统。

问题最终是因为我的项目文件在WSL的/mnt/c下加载,由于某种原因,这对文件访问和修改非常低效。我最终将文件移动到VM中的本地文件夹(对我来说,这是我的主文件夹),页面加载时间缩短到了亚秒级别。仅仅是移动(mv x->y)就花了几分钟,我的风扇都快要疯了。


1
WSL2 和 Windows 表现得好像在同一个网络上,但并不在同一台计算机上。/mnt/C 是一个挂载的网络驱动器,这些驱动器往往比本地驱动器慢得多。据我所知,WSL(1)表现得有所不同。 - apokryfos
1
是的,那很有道理。速度差异太大了,简直让人难以置信。值得注意的是,它也破坏了 Vite。 - Steven Mann
@apokryfos,我编辑了问题,将范围缩小到WSL2。 - Steven Mann
是的,这里有文档记录 https://docs.docker.com/desktop/windows/wsl/ - TrojanName

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接