Windows的docker刪除容器后WSL2磁盤空間不釋放的問題的解決方法
1、起因及原因
很多同學(xué)拉取鏡像使用一段時(shí)間后發(fā)現(xiàn) C 盤快滿了,把之前用過的鏡像和容器刪除,發(fā)現(xiàn) WSL 掛載目錄的虛擬磁盤大小沒有變化,非常的奇怪。 其實(shí),不同于 WSL1,WSL2 本質(zhì)上是虛擬機(jī),所以 Windows 會(huì)自動(dòng)創(chuàng)建 vhdx 后綴的虛擬磁盤文件作為存儲(chǔ)。這個(gè) vhdx 后綴的虛擬磁盤文件特點(diǎn)是可以自動(dòng)擴(kuò)容,但是一般不會(huì)自動(dòng)縮容。一旦有很多文件把它“撐大”,即使把這些文件刪除它也不會(huì)自動(dòng)“縮小”。所以刪除文件后還需要我們手動(dòng)進(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 桌面,等一會(huì) Docker 圖標(biāo)沒了之后,就證明 Docker 完全關(guān)閉了,然后,打開命令提示符:我們就能能夠看到,確保兩個(gè)狀態(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ì)算機(jī)的驅(qū)動(dòng)器的 DiskPart 命令 diskpart
會(huì)新打開一個(gè)叫 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ò)和未使用的鏡像。請(qǐng)注意,這個(gè)命令會(huì)刪除所有未使用的資源,因此請(qǐng)確保你不再需要這些資源。
以上就是Windows的docker刪除容器后WSL2磁盤空間不釋放的問題的解決方法的詳細(xì)內(nèi)容,更多關(guān)于docker WSL2磁盤空間不釋放的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
使用Docker配置redis sentinel哨兵的方法步驟
本文主要介紹了Docker配置redis sentinel哨兵的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07
在Docker容器中運(yùn)行Nginx的詳細(xì)教程
Nginx 是一款高性能 Web 服務(wù)器,常被用作反向代理、負(fù)載均衡器以及內(nèi)容緩存,當(dāng)你將 Nginx 運(yùn)行在 Docker 容器中時(shí),還能進(jìn)一步獲得可移植性、快速部署和更整潔的管理體驗(yàn),本教程將帶你從零開始學(xué)習(xí)如何使用 Docker 部署 Nginx,需要的朋友可以參考下2025-10-10
Redis快速部署為Docker容器的實(shí)現(xiàn)方法
本文主要介紹了Redis快速部署為Docker容器的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-12-12
Docker方式啟動(dòng)tomcat訪問首頁出現(xiàn)404錯(cuò)誤
這篇文章主要介紹了Docker方式啟動(dòng)tomcat訪問首頁出現(xiàn)404錯(cuò)誤。文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12
Docker 跨主機(jī)容器間相互訪問的實(shí)現(xiàn)
本文主要介紹了Docker 跨主機(jī)容器間相互訪問的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01
Ubuntu使用Docker部署Redis并實(shí)現(xiàn)遠(yuǎn)程訪問本地?cái)?shù)據(jù)庫(kù)全過程
這篇文章主要給大家介紹了關(guān)于Ubuntu使用Docker部署Redis并實(shí)現(xiàn)遠(yuǎn)程訪問本地?cái)?shù)據(jù)庫(kù)的相關(guān)資料,Redis遠(yuǎn)程連接是指通過網(wǎng)絡(luò)連接到Redis服務(wù)器,從而可以在不同的機(jī)器問和操作Redis數(shù)據(jù)庫(kù),需要的朋友可以參考下2024-03-03

