Dockerデータ復元のテスト
※今回の記事はあくまでもテストで公式で推奨されているわけではありませんのでご注意ください。
ただどうしても最後の手段で試したいという場合にはもしかすると役に立つかもしれません。
特にvolumeのバックアップは公式推奨の方法があるのでバックアップを取りたい方は後述する参考ページに従うことをお勧めします。
docker volumeの実体はmacの場合以下の何かのディレクトリに保存されています。
MacOS13.4の場合
~/Library/Containers/docker/Data/vms/0/
MacOS10.15.7の場合
~/Library/Containers/com.docker.docker/Data/vms/0/
詳細は以下のページをご参照ください。
ただ中身を見ても結構ごちゃごちゃしています。
そこで今回はテストとして一旦volumeを全て削除してから
Timemachineでバックアップをとっておいた0ディレクトリを
コピーしてデータが復活できるかというのを試してみたいと思います。
結論
以下のディレクトリごとTimemachineからコピペしたら
コンテナ、イメージ、ボリューム全て復元できました。
~/Library/Containers/com.docker.docker/Data/vms/0/
コピーする場合の注意
コピーする場合、Macでoptionキーを押しながらドラッグする形だと実体がコピーされないので注意が必要です。フォルダを選択してctrl+C→ctrl+vでコピーすると全体がコピーされるのでそちらの方法で行うと良いと思います。
行なった作業
1.Docker Desktop for macのpreferencesからInclude VM in Time Machine backupsにチェックを入れます。
2.Timemachineでバックアップを取ります。
3.Docker Desktop for macのTroubleshootからClean / Purge dataでコンテナ、イメージ、volumeを削除します。
4.~/Library/Containers/com.docker.docker/Data/vms/0を移動します。
5.Timemachine内の~/Library/Containers/com.docker.docker/Data/vms/0を4で移動して空いたディレクトリにコピーします。
注意点
以下のディレクトリはバーチャルマシンが丸ごと入っているのか3ファイルで64GBありましたのでご注意ください。
Dockerデータのバックアップについて
本来Dockerのコンセプトそのものが一時環境を簡単に軽く作成するというものなのですが
テスト環境で使っているとデータを保持したいということはあります。
そんな時はデータ専用ボリュームを作成することでコンテナの終了・削除をしてもデータのみ保持するということが実現できますが、docker自体の初期化(Clean / Purge data)を行なってしまうと削除されます。
それでもデータを保持したいということであれば今回の方法も一つではありますが
公式が推奨している以下の方法があるのでそちらを実施した方が安心です。
参考サイト|公式volumeバックアップの方法
Discussion