Windows的docker刪除容器后WSL2磁盤空間不釋放的問題的解決方法
1、起因及原因
很多同學(xué)拉取鏡像使用一段時間后發(fā)現(xiàn) C 盤快滿了,把之前用過的鏡像和容器刪除,發(fā)現(xiàn) WSL 掛載目錄的虛擬磁盤大小沒有變化,非常的奇怪。 其實(shí),不同于 WSL1,WSL2 本質(zhì)上是虛擬機(jī),所以 Windows 會自動創(chuàng)建 vhdx 后綴的虛擬磁盤文件作為存儲。這個 vhdx 后綴的虛擬磁盤文件特點(diǎn)是可以自動擴(kuò)容,但是一般不會自動縮容。一旦有很多文件把它“撐大”,即使把這些文件刪除它也不會自動“縮小”。所以刪除文件后還需要我們手動進(jìn)行壓縮才能釋放磁盤空間。
2、解決
2.1 找到要壓縮的虛擬磁盤文件
如果你沒更改掛載磁盤的位置,那他位置在 C:\Users\<你當(dāng)前用戶名>\AppData\Local\Docker\wsl\data\ext4.vhdx ,記下路徑,后面要用到。

2.2 關(guān)閉 Docker Desktop
在任務(wù)欄右下角右鍵單擊 Docker Desktop 圖標(biāo)關(guān)閉 Docker 桌面,選擇退出 Docker 桌面,等一會 Docker 圖標(biāo)沒了之后,就證明 Docker 完全關(guān)閉了,然后,打開命令提示符:我們就能能夠看到,確保兩個狀態(tài)都已停止。
wsl --list -v

如果這一步?jīng)]關(guān)閉也沒問題,最后所有操作結(jié)束后,重啟 Docker Desktop 即可。
2.3 壓縮虛擬磁盤文件
在 PowerShell 中執(zhí)行:
# 關(guān)閉 WSL2 中的 linux distributions wsl --shutdown # 運(yùn)行管理計算機(jī)的驅(qū)動器的 DiskPart 命令 diskpart
會新打開一個叫 DiskPart 的命令窗口,如下圖:

在新打開的 DiskPart 命令窗口中執(zhí)行:
# 選擇虛擬磁盤文件 select vdisk file="就是步驟2.1虛擬磁盤文件的路徑" # 壓縮文件 compact vdisk # 壓縮完畢后卸載磁盤 detach vdisk
上述操作執(zhí)行完畢,WSL2 刪除文件后空出來的磁盤空間就被釋放了,可以去虛擬磁盤文件的路徑看到 ext4.vhdx 文件大小已經(jīng)減小。最后打開 Docker Desktop 可以看到原來鏡像還在,成功解決問題。
3. 常見的 Docker 清理命令
在 Docker 中,可以使用以下命令來清理未使用的資源,包括未使用的鏡像、容器和網(wǎng)絡(luò):
docker system prune -a
這將刪除所有停止的容器、未使用的網(wǎng)絡(luò)和未使用的鏡像。請注意,這個命令會刪除所有未使用的資源,因此請確保你不再需要這些資源。
以上就是Windows的docker刪除容器后WSL2磁盤空間不釋放的問題的解決方法的詳細(xì)內(nèi)容,更多關(guān)于docker WSL2磁盤空間不釋放的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
docker簡單部署Django項(xiàng)目實(shí)例
使用Docker部署Django項(xiàng)目需配置Nginx和uWSGI,注意端口沖突并禁用宿主機(jī)原有服務(wù),通過自定義bridge網(wǎng)絡(luò)實(shí)現(xiàn)容器間通信,掛載靜態(tài)文件目錄,利用腳本簡化部署流程,確保容器與宿主機(jī)網(wǎng)絡(luò)隔離且可互相訪問2025-09-09
利用Docker Compose部署多容器LNMP環(huán)境的實(shí)戰(zhàn)步驟
本次實(shí)戰(zhàn)通過Docker Compose成功構(gòu)建了完整的LNMP(Nginx + MySQL + PHP-FPM)開發(fā)環(huán)境,通過自定義PHP-FPM鏡像安裝MySQL擴(kuò)展,配置 Nginx 反向代理 PHP 請求,本文介紹的非常詳細(xì),感興趣的朋友一起看看吧2025-12-12
Docker訪問容器中的Spring Boot日志的幾種方法
在本文中,我們將演示如何在Docker容器中訪問Spring Boot日志,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2026-04-04

