第27章:Docker Desktopの“丸ごとバックアップ”という選択肢🧰
この章は「プロジェクト単位(volumeをtar等でバックアップ)」より さらに上 の話です👇 “Docker Desktop環境まるごと”を避難できると、PC移行・再インストール・アップデート失敗のときの復旧がめちゃ楽になります🆘✨ (Docker Documentation)
まず結論:丸ごとバックアップは「2ルート」あるよ😺🧭
ルートA:Docker Desktopが普通に動く(正攻法)✅
やることはシンプルにこの3つ👇
- イメージを退避(push か tar)📦
- volumeを退避(tar)🧳
- コンテナの作り直し情報を残す(Compose推奨/最悪 commit)🧷 (Docker Documentation)
ここがポイント:volumeやbind mountにデータを置いてるなら、コンテナ自体のバックアップは必須じゃないことも多いです。 でも「起動オプションを忘れる」と復元できないので、Compose化が強いです🔥 (Docker Documentation)
ルートB:Docker Desktopが起動しない(緊急避難)🚨
この場合、公式が「ディスクを直接バックアップしてOK」と明言してます。
Windowsなら docker_data.vhdx を安全な場所へコピー が保険になります🛟 (Docker Documentation)
ルートA(動く時)の“丸ごと避難”手順🧳✨
0) まず棚卸し(何がどれだけある?)🔎
(今の状況をメモしつつ確認するだけでOK)
docker ps -a
docker image ls
docker volume ls
1) コンテナを「イメージ化」して退避(最悪の救命ボート)🛶
変更が入ってるコンテナは、commit でイメージ化できます。
ただし注意点が2つ👇
- 環境変数にパスワード等が入ってる可能性がある(漏えい注意)🔑
- volumeの中身は commit では入らない(別途バックアップ必須)📦❌ (Docker Documentation)
docker container commit <container> myapp:backup-2026-02-11
2) イメージ退避は「push」か「tar」どっちかでOK📦
- push:Docker Hub等に置く(公開設定に注意)🔒
- tar:ローカルに固める(外付け等にコピーしやすい)🧳
公式はこの2案を案内しています。(Docker Documentation)
tarにする例:
docker image save -o images.tar myapp:backup-2026-02-11
復元側は:
docker image load -i images.tar
```` :contentReference[oaicite:6]{index=6}
---
## 3) volumeは「tarで固める」が公式ど真ん中🧰
volumeのバックアップ/リストアは、公式が “一時コンテナ+tar” を例示してます📌 :contentReference[oaicite:7]{index=7}
**バックアップ例(公式パターン)**
````bash
docker run --rm --volumes-from dbstore -v $(pwd):/backup ubuntu tar cvf /backup/backup.tar /dbdata
```` :contentReference[oaicite:8]{index=8}
**リストア例(別コンテナへ戻す)**
````bash
docker run --rm --volumes-from dbstore2 -v $(pwd):/backup ubuntu bash -c "cd /dbdata && tar xvf /backup/backup.tar --strip 1"
```` :contentReference[oaicite:9]{index=9}
> ここまでできると「新PCに移しても復元できる」状態になります🚚✨
---
## ルートB(起動しない時)の“ガチ緊急避難”手順🚨🧯
Docker Desktopが起動しない・再インストールしかない…って時に使うやつです🆘
公式手順の骨子はこう👇
1) **Docker Desktopを完全停止**(重要!)🛑
2) 次のファイルをバックアップ:
**`%LOCALAPPDATA%\Docker\wsl\data\docker_data.vhdx`** 📁
3) 必要なら **WSLディストリもバックアップ**(`wsl --export` / `--import`)🐧
4) 再インストール後、同じ場所へ戻して復旧🧩 :contentReference[oaicite:10]{index=10}
## 1) `docker_data.vhdx` を退避する📁
公式が示しているバックアップ対象はこれです👇 :contentReference[oaicite:11]{index=11}
**`%LOCALAPPDATA%\Docker\wsl\data\docker_data.vhdx`**
- **完全停止してからコピー**しないと壊れる可能性があるので、ここだけは慎重に😱 :contentReference[oaicite:12]{index=12}
---
## 2) WSLのUbuntu等も“丸ごと避難”したいなら🐧
WSL側の環境(Ubuntuなど)もまとめて移したい場合、Microsoftは **`wsl --export` / `wsl --import`** を推しています📦 :contentReference[oaicite:13]{index=13}
(例)
````powershell
wsl --export Ubuntu D:\backup\Ubuntu.tar
## 復元
wsl --import Ubuntu D:\wsl\Ubuntu D:\backup\Ubuntu.tar
3) 復元の基本方針🧩
再インストール後は、公式の通り👇
docker_data.vhdxを 同じ場所へ戻す- WSLディストリをバックアップしてたら 再import (Docker Documentation)
“Docker DesktopのUIでポチポチ”でやりたい人へ🖱️✨
昔は Volumes Backup & Share みたいな拡張があり、Volumeのエクスポート/インポートを助けてくれました。 ただ、Marketplace上の拡張は 2024-09-30で非推奨&削除予定と明記されています(=2026年だと見つからない可能性高い)⚠️ (hub.docker.com)
なので教材としては、**CLIの公式手順(tar)を“基準”**にしておくのが安全です💪 (Docker Documentation)
事故りやすいポイント集(ここだけ読んでも価値ある)💥😇
commitは volumeのデータを含まない 📦❌ (Docker Documentation)commitやイメージに 秘密情報(env)が混ざる可能性あり🔑(pushするなら特に注意)(Docker Documentation)- 「バックアップしたけど復元してない」=実質ノーバックアップ 😱
docker_data.vhdxを触る系は、完全停止が命 🛑 (Docker Documentation)
ミニ演習(10分)⏱️🎮
docker image lsとdocker volume lsを叩いて、スクショ or メモ📝- どれか1つイメージを
docker image saveでimages.tarにする📦 - DB系volumeがある人は、tarバックアップ(小さめのやつでOK)🧳
- “別フォルダ” に退避して「復元コマンド」も一緒にメモ📌
AI(Copilot等)に頼むときのコツ🤖✨
- 「このPC移行手順をPowerShellスクリプト化して」🛠️
- 「この手順の抜け漏れチェックリスト作って」✅
- ただし、パスワードやトークンは貼らない🔒(commitの注意点とも相性悪いので特に!)(Docker Documentation)
次の章(第28章)は、この“丸ごと避難”を チーム/複数PCでも破綻しない持ち運び設計に落とし込む感じになるよ🚚✨