Skip to main content

第27章:Docker Desktopの“丸ごとバックアップ”という選択肢🧰

この章は「プロジェクト単位(volumeをtar等でバックアップ)」より さらに上 の話です👇 “Docker Desktop環境まるごと”を避難できると、PC移行・再インストール・アップデート失敗のときの復旧がめちゃ楽になります🆘✨ (Docker Documentation)


まず結論:丸ごとバックアップは「2ルート」あるよ😺🧭

ルートA:Docker Desktopが普通に動く(正攻法)✅

やることはシンプルにこの3つ👇

  1. イメージを退避(push か tar)📦
  2. volumeを退避(tar)🧳
  3. コンテナの作り直し情報を残す(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)


事故りやすいポイント集(ここだけ読んでも価値ある)💥😇

  • commitvolumeのデータを含まない 📦❌ (Docker Documentation)
  • commit やイメージに 秘密情報(env)が混ざる可能性あり🔑(pushするなら特に注意)(Docker Documentation)
  • 「バックアップしたけど復元してない」=実質ノーバックアップ 😱
  • docker_data.vhdx を触る系は、完全停止が命 🛑 (Docker Documentation)

ミニ演習(10分)⏱️🎮

  1. docker image lsdocker volume ls を叩いて、スクショ or メモ📝
  2. どれか1つイメージを docker image saveimages.tar にする📦
  3. DB系volumeがある人は、tarバックアップ(小さめのやつでOK)🧳
  4. “別フォルダ” に退避して「復元コマンド」も一緒にメモ📌

AI(Copilot等)に頼むときのコツ🤖✨

  • 「このPC移行手順をPowerShellスクリプト化して」🛠️
  • 「この手順の抜け漏れチェックリスト作って」✅
  • ただし、パスワードやトークンは貼らない🔒(commitの注意点とも相性悪いので特に!)(Docker Documentation)

次の章(第28章)は、この“丸ごと避難”を チーム/複数PCでも破綻しない持ち運び設計に落とし込む感じになるよ🚚✨