[12][Docker]データのバックアップ
データーのバックアップ
この記事でファイルの永続化やボリュームについて説明しました。
ではボリュームをバックアップするにはどうすればよいでしょうか?
ボリュームの詳細情報
まずボリュームの詳細情報を見てみます。
docker volume inspect mysqlvolume
Mountpoint
Mountpointはボリュームがある場所です。
"Mountpoint": "/var/lib/docker/volumes/mysqlvolume/_data",
Dockerにおけるバックアップの考え方
Dockerでボリュームをバックアップするには、新しいコンテナを作り、そのコンテナでバックアップします。
実例:ボリュームをバックアップする
まず、バックアップするボリュームを利用しているコンテナがないことを確認しましょう。
ボリュームバックアップの慣例的なコマンド
docker run --rm -v mysqlvolume:/src \
-v "$PWD":/dest busybox \
tar czvf /dest/backup.tar.gz \
-C /src .
ファイルの確認
ls -l
アーカイブファイルの中身を見る
tar tvf backup.tar.gz
コマンドの詳細
(理解しやすいように並び替えていて、実際の処理の流れと異なります。)
まずbusyboxの起動します。
(busyboxは軽量なLinuxシステム。)
mysqlvolumeをDockerEngine内の/srcにボリュームマウントします。
/srcディレクトリ内のすべてのファイルを、/destディレクトリ下にbackup.tar.gzとしてアーカイブファイルを作成します。
(tarはアーカイブファイルを作成するコマンドです。)
ローカルのカレントディレクトリを/destにバインドマウントします。
("$PWD"はローカル環境のカレントディレクトリを指します。)
バインドマウントすることで、バックアップしたファイルがカレントディレクトリ内に作成されます。
--rmオプションでtarコマンドが終わったら、コンテナが自動的に破棄されます。
リストアする
ボリュームの削除
docker volume rm mysqlvolume
削除されたか確認
docker volume ls
ボリュームの作成
docker volume create mysqlvolume
新しく作ったので当然、このボリュームは空っぽになる
リストアする
docker run --rm -v mysqlvolume:/dest \
-v "$PWD":/src busybox \
tar xzf /src/backup.tar.gz \
-C /dest
コマンドの詳細
空のmysqlvolumeを/destにボリュームマウント
カレントディレクトリを/srcにバインドマウント。
カレントディレクトリのbackup.tar.gzファイルが/src下に配置されます。
backup.tar.gzを/destに展開する。
/destとマウントされているので、mysqlvolumeに展開される。
ボリューム名を意識せずにバックアップする方法。
ここまでの方法でボリュームをバックアップ、リストアすることができました。
しかし、バックアップする際に、ボリューム名を指定する必要がありますよね。
ボリュームが多くなると管理が大変になります。
この問題点を解決するために、
ボリューム名を意識せずにバックアップする方法があります。
理解するのが大変だったので、この記事に分けて書いてます。
参考文献
さわって学ぶクラウドインフラ docker基礎からのコンテナ構築
最後に
私がブログを書く目的は、素晴らしい本や、素晴らしい方々の技術記事を知って頂きたいからです。ぜひ、上記の参考文献を見て下さい。(noteなので広告とかは一切ありません。)
現在、株式会社grabssに行くために最後の悪あがきをしています!!
現在の進行状況
この記事は12件目の投稿。目標まで後38件。
よろしければ、スキボタン及びサポートお願いします。勉強の励みになります。