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)文章
手動(dòng)構(gòu)建自己的docker容器鏡像實(shí)戰(zhàn)
這篇文章主要介紹了如何手動(dòng)構(gòu)建自己的鏡像并上傳到鏡像倉庫中,文中有詳細(xì)的代碼實(shí)例,需要的朋友可以參考閱讀2023-04-04docker容器增加或者修改容器映射端口的實(shí)現(xiàn)方法
在只有使用docker安裝的容器,沒有使用docker-compose或者其他客戶端工具,如果要增加或者修改容器端口,也是可以增加或者修改容器端口映射,本文給大家介紹了docker容器增加或者修改容器映射端口的實(shí)現(xiàn)方法,需要的朋友可以參考下2025-01-01Docker網(wǎng)絡(luò)配置(橋接網(wǎng)絡(luò)和自定義網(wǎng)絡(luò))自定義網(wǎng)絡(luò)設(shè)置ip方式
這篇文章主要介紹了Docker網(wǎng)絡(luò)配置(橋接網(wǎng)絡(luò)和自定義網(wǎng)絡(luò))自定義網(wǎng)絡(luò)設(shè)置ip方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01Docker?Kill/Pause/Unpause命令使用與區(qū)別小結(jié)
本文詳細(xì)介紹了Docker中的三個(gè)重要命令,kill、pause和unpause,這些命令在管理和操作運(yùn)行中的容器時(shí)非常有用,具有一定的參考價(jià)值,感興趣的可以了解一下2024-03-03docker容器設(shè)置時(shí)區(qū)的幾種方式小結(jié)
Docker的基礎(chǔ)鏡像設(shè)置大多是Etc/UTC,也就是標(biāo)準(zhǔn)的UTC 時(shí)間,所以要簡單的調(diào)整一下,本文主要介紹了docker容器設(shè)置時(shí)區(qū)的幾種方式小結(jié),具有一定的參考價(jià)值,感興趣的可以了解一下2024-05-05docker+mongodb設(shè)置數(shù)據(jù)庫的賬號(hào)和密碼的實(shí)現(xiàn)步驟
本文主要介紹了docker+mongodb設(shè)置數(shù)據(jù)庫的賬號(hào)和密碼的實(shí)現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-08-08