CodeGym /コース /Docker SELF /バックアップとデータ復元

バックアップとデータ復元

Docker SELF
レベル 19 , レッスン 3
使用可能

4.1 バックアップとデータ復元の基本的な方法

もし一度でも大切なデータを失ったことがあるなら、バックアップがどれほど重要なのかは説明する必要もないよね。このレクチャーでは、Dockerでバックアップを作成しデータを復元するための様々な方法やツールについて説明するよ。例えば、ボリュームやバインドマウントのディレクトリなど。

バックアップとデータ復元の基本的な方法

  1. Dockerのボリュームバックアップ
  2. tarユーティリティを使ったバックアップ
  3. コンテナ内のデータベースバックアップ
  4. バックアップからのデータ復元

4.2 Dockerボリュームのバックアップ

Dockerのボリュームは、コンテナ外部にデータを保存するための便利な方法を提供してるよ。ボリュームをバックアップするには、いろんなアプローチを使えるよ。

docker runコマンドを使ったボリュームのバックアップ例

ボリュームのバックアップ作成

ボリュームをマウントするコンテナを作成して、tarユーティリティを使ってデータのアーカイブを作る:

ターミナル

docker run --rm -v my_volume:/data -v /path/to/backup:/backup busybox tar czf 
/backup/my_volume_backup.tar.gz -C /data .

この例では、my_volumeボリュームの内容がmy_volume_backup.tar.gzファイルにアーカイブされて、ホストの/path/to/backupディレクトリに保存されるよ。

バックアップからのボリューム復元の例

ボリュームへのデータ復元

バックアップのディレクトリとボリュームをマウントするコンテナを作成して、tarユーティリティを使ってデータを抽出する:

ターミナル

docker run --rm -v my_volume:/data -v /path/to/backup:/backup busybox tar xzf 
/backup/my_volume_backup.tar.gz -C /data

この例では、my_volume_backup.tar.gzアーカイブのデータがmy_volumeボリュームに復元されるよ。

4.3 tarユーティリティの使用によるバックアップ

tarユーティリティは、バックアップとデータ復元のための強力なツールだよ。コンテナ内でもホストシステム上でも使えるんだ。

コンテナ内でデータのバックアップを作成する例

必要なデータを持つコンテナを起動して、tarを使ってアーカイブを作成しよう:

ターミナル

docker exec -t my_container tar czf /backup/my_container_backup.tar.gz -C /data .

この例では、コンテナmy_container内のディレクトリ/dataのデータがmy_container_backup.tar.gzというファイルにアーカイブされるよ。

アーカイブからデータを復元する例

コンテナを起動して、アーカイブからデータを抽出するためにtarを使おう:

ターミナル

docker exec -t my_container tar xzf /backup/my_container_backup.tar.gz -C /data

4.4 コンテナ内のデータベースバックアップ

データベースにはバックアップと復元のための専用ツールがよく使われるよ。

PostgreSQLデータベースのバックアップ例

pg_dump ユーティリティを使って、データベースのバックアップを作成してみよう:

Terminal

docker exec -t my_postgres_container pg_dump -U myuser mydb > /path/to/backup/mydb_backup.sql

この例では、データベース mydbmydb_backup.sql ファイルにエクスポートされるよ。

PostgreSQLデータベースの復元例

psql ユーティリティを使って、バックアップからデータベースを復元してみよう:

Terminal

cat /path/to/backup/mydb_backup.sql | docker exec -i my_postgres_container psql -U myuser mydb

4.5 バックアップからデータを復元する

データ復元というのは、以前作成したバックアップからデータを取り出すプロセスだよ。

ボリュームのバックアップからデータを復元する例

docker runコマンドを使ってボリュームにデータを取り出そう:

ターミナル

docker run --rm -v my_volume:/data -v /path/to/backup:/backup busybox tar xzf
/backup/my_volume_backup.tar.gz -C /data

MySQLデータベースの復元例

mysqldumpユーティリティを使ってデータベースのバックアップを作成しよう:

ターミナル

docker exec my_mysql_container mysqldump -u myuser -p mypassword mydb >
/path/to/backup/mydb_backup.sql

mysqlユーティリティを使ってデータベースを復元しよう:

ターミナル

cat /path/to/backup/mydb_backup.sql | docker exec -i my_mysql_container mysql -u myuser -p
mypassword mydb
コメント
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION