[英]docker on wsl2 very slow
看了wsl2上运行Docker的性能提升后,一直在等待支持wsl2的Windows 10正式发布。 我更新了 Windows 和 Docker 并打开 Docker 标志以使用 wsl2,并希望我的 Oracle 数据库在 Docker 容器中运行时有一些性能提升,但不幸的是,这种变化显着降低了容器和我的笔记本电脑的速度。 容器的性能大约慢了 10 倍,我的笔记本电脑在启动容器时几乎卡住了。 似乎 memory 消耗会完全用完我的 8GB 和大量 memory 交换开始发生。 我可以做些什么来提高 wsl2 上 Docker 的性能,或者至少更好地了解我的设置有什么问题?
我的环境:
这来自“vmmem”,它消耗尽可能多的资源。 要解决问题只需 go 到您的用户文件中
C:\用户\用户名
在此目录中创建一个名为“ .wslconfig ”的文件,您将在其中配置可以消耗 WSL2 的资源数量:
[wsl2]
memory=900MB #Limits VM memory in WSL 2 to 900MB
processors=1 #Makes the WSL 2 VM use one virtual processors
现在关闭您的 docker 并等待“vmmem”在任务管理器中关闭。
然后您可以重新启动 docker 并且通常“vmmem”不会超过您设置的限制(此处为 900MB)如果不起作用,请重新启动您的计算机。
希望对您有所帮助。
您可能将您的代码存储在 Windows 机器上类似于此的文件夹中......
C:\\Users\YourName\projects\blahfu
但是您在 WSL 2 上使用 Docker,这是一个不同的 (Linux) 文件系统。 因此,当您执行 Docker 构建时,所有代码/上下文都会从 Windows 文件系统复制到 Linux 文件系统,然后从那里复制到 Docker 容器。 这是最耗时的,而且速度非常慢。
尝试将您的项目放入这样的文件夹中......
/home/YouName/projects/blahfu
你应该得到相当大的性能提升。
wsl 容器具有与 windows 文件系统隔离的适当文件系统。 基本思想是将源代码从 windows 文件系统复制到 wsl 文件系统。
从 window 您可以访问 wsl 容器并将您的项目复制到 wslcontainer:
使用资源管理器导航到\\wsl$
从这个位置重建容器,这样就可以了!
如果实际 docker 容器的数据存储在 windows 文件系统(即 NTFS)上,而不是存储在本机 linux 文件系统上(不管 docker 容器内容是什么,很可能已经基于 linux),那么我认为你是将看到性能下降,因为您正在运行 WSL 并使用已安装的 WINDOWS 文件系统(即 /c/mnt/...)中的 docker 容器。
如果您将 docker 容器复制到 WSL 上的 /usr/local 或 /home//docker 之类的位置,那么您可能会看到 10 倍的性能提升。 尝试一下,看看它是否有效?
您需要编辑“vmmem”资源,只需在路径中添加 file.wslconfig
C:\Users<您的用户名>.wslconfig
使用 .wslconfig 配置全局选项
Available in Windows Build 19041 and later
您可以通过将 .wslconfig 文件放入用户文件夹的根目录来配置全局 WSL 选项:C:\Users<yourUserName>.wslconfig。 其中许多文件与 WSL 2 相关,请记住您可能需要运行
wsl--关机
关闭 WSL 2 VM,然后重新启动 WSL 实例以使这些更改生效。
这是一个 sample.wslconfig 文件:
安慰
Copy
[wsl2]
kernel=C:\\temp\\myCustomKernel
memory=4GB # Limits VM memory in WSL 2 to 4 GB
processors=2 # Makes the WSL 2 VM use two virtual processors
看到这个https://learn.microsoft.com/en-us/windows/wsl/wsl-config
如果您使用的是 VS Code,则有一个名为“远程容器:容器卷中的克隆存储库...”的命令可确保您拥有全速文件访问权限。
形成文档:
存储库容器使用隔离的本地 Docker 卷,而不是绑定到本地文件系统。 除了不会污染您的文件树之外,本地卷还具有提高 Windows 和 macOS 性能的额外好处。
打开您的 wsl2 发行版(例如 Ubuntu)并设置 ~/.docker/config.json 文件。
只有你需要改变:
{
"credsStore": "docker.exe"
}
“credsStore”:“desktop.exe”:超慢(超过 2 分钟)
“credsStore”:“wincred.exe”:快
“credsStore”:“”:快
它工作得很好。
在阅读了有关在 wsl2 上运行 Docker 时的性能改进后,我一直在等待支持 wsl2 的 Windows 10 的正式发布。 I updated Windows and Docker and switched on the Docker flag to use wsl2 and was hoping for some performance boost for my Oracle Database running in a Docker container but unfortunately the change slowed down the container and my laptop dramatically. 容器的性能大约慢了 10 倍,我的笔记本电脑在启动容器时几乎卡住了。 似乎 memory 消耗将完全用完我的 8GB,并且开始进行大量的 memory 交换。 我可以做些什么来提高 wsl2 上 Docker 的性能,或者至少更好地了解我的设置有什么问题?
我的环境:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.