一文詳解如何更改Docker鏡像存儲路徑
背景與痛點
Docker Desktop默認將鏡像存儲在C盤的C:\Users\<用戶名>\AppData\Local\Docker\wsl\data路徑下。隨著鏡像和容器數(shù)量增加,C盤空間可能迅速被占滿。本文將通過WSL實例遷移和高級掛載策略兩種方案,教你安全高效地遷移存儲路徑。
方案一:WSL實例遷移法(推薦)
適用場景:希望徹底改變存儲位置,適用于所有Windows版本。
一、能找到 docker-desktop-data 時
1. 確認當前存儲路徑
打開Docker Desktop → Settings → Resources → Advanced
記錄當前路徑(如
C:\Users\admin\AppData\Local\Docker\wsl)
進入資源管理器,查看
data文件夾大小(通常幾十GB)
2. 停止Docker服務
首先需要關閉Docker Desktop應用,然后打開 PowerShell 輸入wsl --list -v查看查看WSL中的運行的實例是否停止,一般情況下關閉Docker Desktop應用,WSL中的運行的實例也會跟著停止,如下所示:

如果沒有正確停止state會顯示為running,這是我們則需要輸入如下命令停止實例
# 關閉Docker Desktop應用 taskkill /f /im Docker.exe # 終止WSL實例 wsl --shutdown
停止之后再次輸入wsl --list -v查看進程是否被正確關閉。
3. 導出WSL實例
# 創(chuàng)建備份目錄(建議非系統(tǒng)盤,我這里選的是D盤) mkdir D:\docker\backup # 導出實例(耗時取決于數(shù)據(jù)量) wsl --export docker-desktop-data D:\docker\backup\docker-desktop-data.tar
4. 注銷原有實例
wsl --unregister docker-desktop-data

5. 導入到新位置
# 創(chuàng)建目標目錄 mkdir D:\docker\data # 導入實例(必須指定--version 2) wsl --import docker-desktop-data D:\docker\data D:\docker\backup\docker-desktop-data.tar --version 2
- docker-desktop-data 為要導入的實例的名稱,不可修改
- D:docker\data 新的位置要導入的文件夾
- D:docker\docker-desktop-data.tar 之前導出備份的實例
6. 驗證遷移結果
# 檢查WSL實例狀態(tài) wsl --list -v # 啟動Docker Desktop # 進入設置查看存儲路徑是否變?yōu)镈:\docker\data
二、找不到 docker-desktop-data 時
在某些系統(tǒng)進行 wsl 實例導出時系統(tǒng)可能會提示不存在具有所提供名稱的分發(fā),如下所示:

當通過 wsl --export 命令操作 docker - desktop - data 分發(fā)報 WSL_E_DISTRO_NOT_FOUND 錯誤,說明系統(tǒng)里 WSL 未識別到名為 docker - desktop - data 的分發(fā),但找到了 docker_data.vhdx 文件時,可按以下思路處理來調(diào)整 Docker 數(shù)據(jù)存儲路徑,本質(zhì)是繞開 WSL 分發(fā)名稱問題,直接遷移虛擬磁盤文件:
優(yōu)先通過 Docker Desktop 內(nèi)置功能遷移數(shù)據(jù)(Settings → Resources → Advanced → Disk image location),而非手動復制 VHDX,減少兼容性問題。如果不行,可以用以下方法
1.確定 docker_data.vhdx 存儲位置
還是在這個界面我們找到下面這個位置,復制到C盤查找 docker_data.vhdx

一般在這個路徑下面(不同安裝配置可能有差異,以實際找到的路徑為準 ):
C:\Users\DELL\AppData\Local\Docker\wsl\disk

2.停止 Docker 及 WSL 相關服務
- 完全退出 Docker Desktop 應用(右鍵任務欄 Docker 圖標,選擇“退出” )。
- 打開 PowerShell(以管理員身份運行 ),執(zhí)行
wsl --shutdown,關閉所有 WSL 實例,確保后續(xù)操作時虛擬磁盤文件未被占用。
3.復制/移動到新路徑
將 docker_data.vhdx 文件復制(或剪切,建議先復制做備份 )到你期望的新存儲路徑,比如 D:\docker\data\docker_data.vhdx ,這一步可能耗時較久,具體按你本身的數(shù)據(jù)量,且不會返回結果,如需驗證是否成功,打開文件夾找到你所創(chuàng)建的文件,看里面是否已經(jīng)遷移有 docker_data.vhdx 。
- 若選擇剪切(移動),執(zhí)行命令(在 PowerShell 中 ):
Move-Item -Path "C:\Users\<你的用戶名>\AppData\Local\Docker\wsl\data\docker_data.vhdx" -Destination "D:\docker\data\docker_data.vhdx"
- 若選擇復制,執(zhí)行(在 PowerShell 中 ):
Copy-Item -Path "C:\Users\<你的用戶名>\AppData\Local\Docker\wsl\data\docker_data.vhdx" -Destination "D:\docker\data\docker_data.vhdx"
4.重新配置 Docker Desktop 指向新路徑
Docker Desktop 本身不直接支持通過圖形界面“指定虛擬磁盤路徑”,但可通過修改 WSL 分發(fā)的配置來關聯(lián)新路徑的 docker_data.vhdx :
(1). 創(chuàng)建新的 WSL 分發(fā)(關聯(lián)新虛擬磁盤 )
在 PowerShell 中執(zhí)行以下命令,創(chuàng)建一個新的 WSL 分發(fā),并讓它使用你遷移后的 docker_data.vhdx 文件:
wsl --import docker-desktop-data "D:\docker\data" "D:\docker\data\docker_data.vhdx" --version 2 --vhd
docker-desktop-data:是新創(chuàng)建的 WSL 分發(fā)名稱,盡量與 Docker 預期的名稱保持一致,方便識別;"D:\docker\data":是新的存儲路徑(即docker_data.vhdx所在的文件夾 );"D:\docker\data\docker_data.vhdx":是遷移后的虛擬磁盤文件路徑;--version 2:指定使用 WSL 2 版本,必須添加,否則 Docker 可能無法正常工作。
(2). 驗證 WSL 分發(fā)
執(zhí)行 wsl --list -v ,查看是否出現(xiàn) docker-desktop-data 分發(fā),且狀態(tài)為 Stopped ,路徑為你設置的 D:\docker\data 。

5.重啟 Docker Desktop 并驗證
- 重新打開 Docker Desktop ,等待其自動初始化。
- 啟動后,可通過以下方式驗證:
- 查看 Docker 界面,嘗試啟動容器、拉取鏡像,確認功能正常;
- 檢查新存儲路徑(
D:\docker\data),后續(xù) Docker 相關數(shù)據(jù)會寫入該目錄,原 C 盤路徑不再增大; - 再次執(zhí)行
wsl --list -v,確認docker-desktop-data分發(fā)狀態(tài)正常(運行 Docker 時可能會變?yōu)?Running,停止 Docker 后會回到Stopped)。
6.清理舊數(shù)據(jù)(可選)
若遷移成功,且 Docker 工作正常,可刪除原路徑(C:\Users\<你的用戶名>\AppData\Local\Docker\wsl\data )下的舊 docker_data.vhdx 文件(若之前是剪切遷移則無需此步驟 ),釋放 C 盤空間。
關鍵說明
- 整個過程的核心是利用 WSL 的
--import功能,手動創(chuàng)建關聯(lián)新虛擬磁盤的分發(fā),讓 Docker Desktop 能識別并使用新路徑的存儲。 - 操作前務必備份好
docker_data.vhdx文件,若遷移過程中文件損壞,可能導致 Docker 數(shù)據(jù)丟失(比如鏡像、容器配置等 )。 - 不同 Docker 版本、WSL 環(huán)境可能有細微差異,若遇到問題,可通過重新執(zhí)行
wsl --import命令調(diào)整,或嘗試卸載重裝 Docker Desktop(需提前備份重要數(shù)據(jù) )。
這樣就繞開了 WSL 分發(fā)名稱找不到的問題,通過直接遷移虛擬磁盤文件并重新關聯(lián),實現(xiàn)了更改 Docker 數(shù)據(jù)存儲路徑的目的。
方案二:掛載卷映射法(高級)
適用場景:希望保留原有實例,僅修改存儲路徑。
1. 創(chuàng)建符號鏈接(Windows)
# 以管理員身份運行PowerShell New-Item -ItemType SymbolicLink -Path "C:\Users\admin\AppData\Local\Docker\wsl\data" -Target "D:\docker\data"
2. 掛載目錄到WSL(Linux)
# 進入WSL終端 sudo mkdir /mnt/docker/data sudo mount --bind /mnt/wsl/docker-desktop-data /mnt/docker/data
3. 配置自動掛載(可選)
# 編輯fstab文件 sudo nano /etc/fstab # 添加以下行 /mnt/wsl/docker-desktop-data /mnt/docker/data none bind 0 0
關鍵注意事項
備份策略:
- 遷移前務必備份
docker-desktop-data.tar - 定期使用
docker system prune -a清理無效鏡像
- 遷移前務必備份
權限問題:
- 導出/導入命令需管理員權限
- 確保目標目錄權限為
777(WSL中)
性能優(yōu)化:
- 優(yōu)先選擇SSD作為存儲盤
- 調(diào)整WSL資源分配(內(nèi)存/CPU)
驗證與調(diào)試
鏡像完整性檢查:
docker images # 確認所有鏡像存在
容器啟動測試:
docker run -d --name test nginx docker ps # 檢查容器狀態(tài)為Up
空間釋放驗證:
# 在資源管理器查看C盤空間變化
官方資源
總結
通過本文的兩種方案,你可以安全地將Docker鏡像存儲從C盤遷移到其他磁盤。WSL遷移法適合徹底改變存儲位置,而掛載卷法適合靈活調(diào)整。建議定期清理無效鏡像,并為WSL分配足夠資源以確保性能。在生產(chǎn)環(huán)境中,結合備份策略和監(jiān)控工具(如Portainer)可進一步提升穩(wěn)定性。
常見問題解答:
- Q:遷移后Docker無法啟動?
A:檢查WSL實例狀態(tài),重新導入備份- Q:鏡像文件仍占用C盤空間?
A:刪除舊實例殘留文件(C:\Users\<用戶名>\AppData\Local\Docker)- Q:WSL導出失???
A:確保目標磁盤有足夠空間,以管理員身份運行命令
通過遷移存儲路徑管理,你可以充分釋放C盤空間,讓Docker服務運行得更高效穩(wěn)定。
到此這篇關于如何更改Docker鏡像存儲路徑的文章就介紹到這了,更多相關Docker鏡像存儲路徑更改內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
基于Docker搭建Redis一主兩從三哨兵的實現(xiàn)
這篇文章主要介紹了基于Docker搭建Redis一主兩從三哨兵的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-09-09
利用Dockerfile優(yōu)化Nestjs構建鏡像大小詳情
這篇文章主要介紹了利用Dockerfile優(yōu)化Nestjs構建鏡像大小詳情,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下2022-08-08
Docker如何給Springboot項目動態(tài)傳參的實現(xiàn)方法
這篇文章主要介紹了Docker如何給Springboot項目動態(tài)傳參的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-11-11

