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

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

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

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

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

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

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

