[英]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.