【保存版】Docker Desktopの仮想ディスクをDドライブへ移動+アップデート対策ワンクリック復旧スクリプト
〜Cドライブ容量圧迫を根本解消し、自動でリンク再生できる開発環境最適化ガイド〜
📌 本記事の目的
- Docker Desktopの仮想ディスク(
ext4.vhdx
)がC:ドライブを圧迫している… - D:ドライブに移動したいが、アップデートのたびにリンクが壊れて困る
- 手動復旧ではなく「ワンクリックで復旧」したい
という開発者のために、
✅ この記事でできること
- Docker Desktopの仮想ディスクをD:へ安全に移動
- シンボリックリンクでC:→D:を偽装
- アップデートでリンクが消えても1コマンドで復旧する
.ps1
スクリプト付き
💽 なぜCドライブが圧迫されるのか?
Docker Desktop(WSL2バックエンド)では、以下のような仮想ディスク構造になっています:
C:\Users\<ユーザー名>\AppData\Local\Docker\wsl\data\ext4.vhdx
この ext4.vhdx
に、以下すべてが保存されます:
- Dockerイメージ
- コンテナ
- ボリューム
- キャッシュ
→ 10GB〜100GBに肥大化することも。
✅ ステップ1:仮想ディスクをDドライブへ移動
🧱 ① Docker Desktopを完全に終了
wsl --shutdown
taskkill /f /im "Docker Desktop.exe"
📦 ② 仮想ディスクをD:に移動(例:D:\Docker\data
)
# 元ファイルパス
$src = "$env:LOCALAPPDATA\Docker\wsl\data\ext4.vhdx"
# 移動先(任意だが以下を例に)
$dst = "D:\Docker\data\ext4.vhdx"
# フォルダ作成とファイル移動
New-Item -ItemType Directory -Path "D:\Docker\data" -Force
Move-Item -Path $src -Destination $dst
🧹 ③ 元の data
フォルダを削除
Remove-Item "$env:LOCALAPPDATA\Docker\wsl\data" -Recurse -Force
🔗 ④ シンボリックリンクを作成(C→D)
cmd /c mklink /D "%LOCALAPPDATA%\Docker\wsl\data" "D:\Docker\data"
🚀 ⑤ Docker Desktop を起動 → 正常に動けば成功
🧠 アップデート対策:リンクが消えたときの復旧手順
Dockerのアップデートによってリンクが消えたり、C:に勝手に新しい data
が作られることがあります。
✅ 対応方法は「削除→再リンク→再起動」の3ステップ
🔁 ステップ2:1コマンドで復旧できる .ps1 スクリプト
# repair-docker-link.ps1
$target = "D:\Docker\data"
$link = "$env:LOCALAPPDATA\Docker\wsl\data"
$dockerExe = "C:\Program Files\Docker\Docker\Docker Desktop.exe"
Write-Host "`n🛠 Docker Desktop シンボリックリンク修復スクリプトを実行中..." -ForegroundColor Cyan
# Docker停止
Write-Host "🛑 Docker停止中..."
wsl --shutdown
Stop-Process -Name "Docker Desktop" -Force -ErrorAction SilentlyContinue
# 不正なフォルダを削除
if (Test-Path $link -and !(Test-Path "$link\ext4.vhdx")) {
Write-Host "🧹 C:側の誤生成された data フォルダを削除..."
Remove-Item $link -Recurse -Force
}
# リンク再作成
if (!(Test-Path "$link\ext4.vhdx")) {
Write-Host "🔗 シンボリックリンクを作成中..."
cmd /c mklink /D "$link" "$target" | Out-Null
}
# Docker起動
Write-Host "🚀 Docker Desktop を起動中..."
Start-Process "$dockerExe"
Write-Host "✅ 完了しました。" -ForegroundColor Green
✅ 実行方法
- 上記コードを
repair-docker-link.ps1
という名前で保存 - PowerShell を「管理者として実行」
- スクリプトを実行:
.\repair-docker-link.ps1
🎁 オプション:ショートカットを作ってワンクリック実行にする
repair-docker-link.ps1
に対して.bat
を用意:
@echo off
powershell -ExecutionPolicy Bypass -File "D:\Docker\repair-docker-link.ps1"
- これをデスクトップに置けば、ダブルクリックで復旧完了します。
✅ まとめ
内容 | 説明 |
---|---|
C:ドライブを圧迫する理由 | ext4.vhdx にすべて保存されるため |
D:ドライブへ移動する手順 | 移動→削除→シンボリックリンク |
アップデート後の復旧方法 | repair-docker-link.ps1 で自動復元 |
長期安定運用のポイント | シンボリックリンクとスクリプトで自動化 |
💡 この記事に加え、「WSLとDockerの最適ストレージ設計」「Notionマニュアル用PDF」「スクリプト一式の.zipパッケージ」なども提供可能です。必要であればお知らせください。
コメント