docker_data.vhdx占用系統(tǒng)盤過大的問題解決辦法
發(fā)現(xiàn)問題
服務(wù)器的Docker Desktop 的image dick文件docker_data.vhdx 默認(rèn)是在C盤下C:\Users\Administrator\AppData\Local\Docker\wsl\disk
今天發(fā)現(xiàn)500G的C盤幾乎被占滿了,一個docker_data.vhdx文件就占了270G!!
看了網(wǎng)上一些解決方案,有些復(fù)雜,什么需要wsl --shutdown啥,其實在的最新的decktop中操作很簡單。目前版本是:Docker Desktop 4.49.0 (208700) is currently the newest version available.
設(shè)置setting中找到resources選項,就可以看到disk image location選項,可以將該選項直接browse到D盤(或其他非系統(tǒng)盤),在D盤會自動創(chuàng)建DockerDesktopWSL目錄,然后按下出現(xiàn)的Apply & restart按鈕

這時候會提示要不要Move disk image,點擊Yes,move it。稍等片刻,巨吃C盤空間的docker_data.vhdx就會移動到D:\DockerDesktopWSL下,同時釋放C盤空間

解決方式就這么簡單:)
使用 Windows 的 diskpart 工具對 Docker 的 .vhdx 文件執(zhí)行壓縮操作,是官方支持的、相對安全的維護(hù)手段,但任何涉及系統(tǒng)底層文件的操作都應(yīng)謹(jǐn)慎。
以下是具體的操作步驟和風(fēng)險提示。
具體操作步驟
此操作的核心是先完全關(guān)閉 WSL2 和 Docker,釋放對虛擬磁盤文件的占用,然后使用 diskpart 工具對其進(jìn)行壓縮。
關(guān)閉 Docker Desktop
在系統(tǒng)托盤中右鍵點擊 Docker 圖標(biāo),選擇 Quit Docker Desktop。
關(guān)閉 WSL2 實例
以管理員身份打開 PowerShell 或命令提示符 (CMD)。
輸入以下命令并回車,這會終止所有正在運行的 WSL2 實例:
wsl --shutdown
執(zhí)行 diskpart 壓縮
在同一個管理員命令行窗口中,輸入 diskpart 并回車,啟動 Diskpart 工具。
依次輸入并執(zhí)行以下命令(建議逐行復(fù)制粘貼執(zhí)行):
注意:默認(rèn)路徑為
%LOCALAPPDATA%\Docker\wsl\data\ext4.vhdx。如果之前遷移過位置,請將路徑替換為你的實際路徑。
select vdisk file="%LOCALAPPDATA%\Docker\wsl\data\ext4.vhdx" attach vdisk readonly compact vdisk detach vdisk exit
命令解釋:
select vdisk: 選擇要操作的虛擬磁盤文件。attach vdisk readonly: 以只讀模式掛載磁盤,這是壓縮的前提。compact vdisk: 執(zhí)行壓縮,回收未使用的物理空間。detach vdisk: 卸載磁盤。exit: 退出工具。
完成
操作成功后,重新啟動 Docker Desktop。此時查看 .vhdx 文件的大小,應(yīng)該已經(jīng)顯著減小。
操作風(fēng)險提示
總體來說,這個操作是低風(fēng)險的,但需注意以下幾點:
- 必須以管理員身份運行:
diskpart操作需要管理員權(quán)限,否則會報錯“拒絕訪問”。 - 文件占用沖突:如果 Docker 或 WSL2 沒有完全關(guān)閉(例如后臺進(jìn)程仍在運行),
attach vdisk步驟會失敗,提示“另一個程序正在使用此文件”。此時必須確保第一步已執(zhí)行到位,否則強(qiáng)行操作可能導(dǎo)致數(shù)據(jù)損壞。務(wù)必先執(zhí)行wsl --shutdown。 - 數(shù)據(jù)丟失風(fēng)險:此操作本身不會刪除容器內(nèi)的數(shù)據(jù),因為它只是回收虛擬磁盤中“已標(biāo)記為刪除”的空間。但是,任何磁盤維護(hù)操作都存在理論上的風(fēng)險。
- 高風(fēng)險操作:如果在
diskpart中錯誤地使用了clean或delete命令,將導(dǎo)致 Docker 所有鏡像和容器數(shù)據(jù)永久丟失。請務(wù)必不要輸入這些命令。
- 高風(fēng)險操作:如果在
- 效果不一:壓縮的效果取決于你之前刪除了多少數(shù)據(jù)。如果虛擬磁盤內(nèi)部沒有多少空閑空間,壓縮后的大小變化不會很明顯。
總結(jié)建議:
只要嚴(yán)格按照步驟操作,特別是確保以管理員身份運行并先關(guān)閉 WSL2,這個操作是安全的。它是清理 Docker 占用磁盤空間的有效方法。
到此這篇關(guān)于docker_data.vhdx占用系統(tǒng)盤過大的問題解決辦法的文章就介紹到這了,更多相關(guān)docker_data.vhdx占用系統(tǒng)盤過大內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Docker中容器數(shù)據(jù)卷(Data Volume)和數(shù)據(jù)管理詳解
- 解決Docker安裝錯誤failure:repodata/repomd.xml from docker-ce-stable
- Docker啟動Nacos報錯:No DataSource set問題及解決
- 深入理解 Docker 數(shù)據(jù)卷(Data Volume)
- 如何使用Docker恢復(fù)Mysql8備份的Data數(shù)據(jù)
- Docker?修改存儲位置的步驟(data-root?遷移完整指南)
- docker部署datax全過程
- docker啟動anything llm報unable to open database file: ../storage/anythingllm.db問題及解決
- Docker 部署Datart BI工具完整指南(PostgreSQL 持久化存儲)
相關(guān)文章
如何使用Docker和cpolar在Linux服務(wù)器上搭建DashDot監(jiān)控面板
本文主要介紹如何在Linux服務(wù)器上使用Docker和cpolar技術(shù)搭建DashDot監(jiān)控面板,實現(xiàn)實時服務(wù)器監(jiān)控,DashDot提供直觀的監(jiān)控界面和豐富的指標(biāo),通過cpolar可以實現(xiàn)公網(wǎng)訪問,方便用戶隨時了解服務(wù)器狀態(tài),文章詳細(xì)說明了環(huán)境準(zhǔn)備、安裝Docker、配置DashDot和cpolar的步驟2024-09-09
Docker 設(shè)置代理的三種方法(2025年06月03日親測可用)
在Docker中設(shè)置代理是非常常見的需求,本文將介紹三種配置Docker使用代理的常見方法,包括通過配置鏡像加速器、通過配置HTTP/HTTPS代理及通過配置代理,感興趣的可以了解一下2025-09-09
使用Dockerfile實現(xiàn)容器內(nèi)部服務(wù)隨容器自啟動的方法
這篇文章主要介紹了使用Dockerfile實現(xiàn)容器內(nèi)部服務(wù)隨容器自啟動,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-06-06
docker中Dockerfile方式建立鏡像HelloWorld
這篇文章主要介紹了docker中Dockerfile方式建立鏡像HelloWorld,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-07-07

