Dockerコンテナのデータを復元する方法

Dockerコンテナのデータを復元する方法

プロジェクトのテスト環境データベースのデータが失われてしまったので、記録しておきたいと思います。当時は、一定期間一時的に使用され、永続的ではないと考えて、Docker を使用してインストールされました。一昨日突然、docker ログがいっぱいになり、同僚がログをクリーンアップしたかったので、次のコマンドを使用しました。

docker システム プルーン

その結果、当時はMySQLコンテナは通常停止状態だったのですが、突然強制終了してしまいました。バックアップしていたデータは3月のものだったので、ひどい状況でした。それから様々な研究が再開され始めました。

次に、このコマンドが何をするのかを調べるために公式ドキュメントを参照しました。上記で使用したdocker system prune次のことを意味します。

未使用のコンテナ、ネットワーク、イメージ (ぶら下がっているものも参照されていないものも)、およびオプションでボリュームをすべて削除します。

未使用のコンテナ、ネットワーク、イメージ (ぶら下がっているイメージと参照されていないイメージ)、およびオプションでボリュームをすべて削除します。

デフォルトでは、現在ボリュームを使用しているコンテナがない場合、重要なデータが削除されるのを防ぐため、ボリュームは削除されません。ボリュームも削除するには、コマンドを実行するときに--volumesフラグを使用します。

デフォルトでは、現在ボリュームを使用しているコンテナがない場合、重要なデータが削除されないようにボリュームは削除されません。コマンドを実行するときに--volumesフラグを使用してボリュームを削減することもできます。

これで安心しました。幸い、データボリュームは削除されていません。データボリュームを使用してデータを回復できます。次に、回復計画を記録します。

1. データボリュームの場所を見つける

データボリュームディレクトリは/var/lib/docker/volumesの下にあります。各コンテナには、このディレクトリの下にフォルダがあります。コンテナがまだ存在する場合は、 docker inspect 容器IDを使用してデータボリュームの場所を表示できます。コンテナが削除されたので、どうすればいいでしょうか? 1 つずつ探すしかありません。通常、MySQL コンテナのデータボリュームディレクトリの下に_dataディレクトリがあり、そこに各データベースのフォルダが表示され、ようやく見つかりました。

画像-20210510113543085

画像-20210510114631505

このcxhelloテスト ライブラリであり、これでデータを復元できます。

2. 回復

新しいボリュームを作成するにはdocker volume create 數據卷名字コマンドを使用し、ボリュームのリストを表示するにはdocker volume lsコマンドを使用します。

画像-20210510114945865

注意: データ ボリュームをマウントに使用する場合、データ ボリュームは空のディレクトリである必要があります。つまり、データを含めることはできません。

次にコンテナを作成します

docker run -d -p 3309:3306 -v mysqldata:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name huifu mysql:5.7

画像-20210510115714866

データを回復する前に、新しく作成されたデータ ボリューム内の関連コンテンツを削除し、以前のデータ ボリュームのコンテンツを現在のデータ ボリュームにコピーしてデータを回復する必要があります。

/var/lib/docker/volumes/mysqldata/_data/ をコピーします。
rm -f *
rm -f -R *

画像-20210510130608341

コンテンツをデータボリュームにコピーする

cd /var/lib/docker/volumes/1db16a9dfdf3442b117ebc2ec11df5df4db717cfd567c77fa0a49905a9652fa0/_data/
cp -R * /var/lib/docker/volumes/mysqldata/_data/

画像-20210510131213523

この時点で、データベースデータの復旧は完了です。復元されたコンテナを入力して、

画像-20210510131728135

参考文献

https://docs.docker.com/engine/reference/commandline/system_prune/

https://www.cnblogs.com/cheyunhua/p/13433400.html

これで、docker コンテナ データの復旧方法に関するこの記事は終了です。docker コンテナ データの復旧の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Dockerコンテナイメージからコードを復元する手順
  • Dockerデータのバックアップとリカバリプロセスの詳細な説明
  • docker での psql データベースのバックアップとリカバリの詳細な説明
  • Docker におけるコンテナのバックアップ、リカバリ、移行の詳細な説明
  • Dockerプライベートウェアハウスリカバリ例の詳細な説明

<<:  CSS3でカルーセル画像を作成する方法

>>:  デザイン理論:テキスト表現とユーザビリティ

推薦する

MySQL 5.7.23 解凍バージョンのインストールチュートリアル(画像とテキスト付き)

MySQLインストーラをダウンロードする公式ダウンロードアドレス: http://dev.mysq...

JSでユーザーを追跡する方法

目次1. 同期AJAX 2. 非同期AJAX 3. ユーザーのクリックを追跡する4. リバウンドトラ...

ウェブフロントエンド開発者が知っておくべき 9 つの実用的な CSS プロパティ

1. 角を丸くする今日の Web デザインは、常に最新の開発テクノロジーに追随しており、HTML5 ...

DockerにFastDFSをインストールする方法

画像をプルする docker pull season/fastdfs:1.2トラッカーを開始 doc...

nginx 設定チュートリアルにおける add_header の落とし穴の詳細な説明

序文add_header は、headers モジュールで定義されたディレクティブです。名前が示すよ...

Dockerfileを使用してDockerイメージを構築する手順

Dockerfile は、命令を含むテキスト ファイルです。各命令はレイヤーを構築するため、各命令の...

VueコンポーネントライブラリElementUIはテーブルリストのページング効果を実現します

ElementUIはテーブルリストのページング効果のチュートリアルを実装しています。参考までに。具体...

CSSフローティングとフローティング解除について

フロートの定義要素を通常のドキュメント フローから外し、要素を左また​​は右に近づけます。親要素の端...

垂直方向の中央揃えをエレガントに実現する方法を教えます(推奨)

序文CSS で水平方向と垂直方向に中央揃えする方法はたくさんあります。この記事で紹介する方法は非常に...

Linux でマウントされたファイルシステムの種類を表示する方法

序文ご存知のとおり、Linux は ext4、ext3、ext2、sysfs、securityfs、...

MySQL 8の新機能ROLEの詳しい説明

MySQL ROLE はどのような問題を解決しますか?プロフェッショナルな資質を持ち、権限管理に細心...

フロントエンドブラウザのフォントサイズが12px未満のソリューション

序文最近プロジェクトに取り組んでいたとき、UI デザインのフォント サイズは 10 ピクセルでした。...

サーバーストレステストの概念と方法 (TPS/同時実行性)

目次1 ストレステストの指標1.1 秒あたり1.2 クォータ1.3 平均処理時間(RT) 1.4 同...

Linux環境変数ファイルの簡単な紹介

Linux システムでは、環境変数は適用範囲に応じて、システムレベルの環境変数とユーザーレベルの環境...

MySQL 入門 - SQL 実行プロセス

目次1. プロセス2. コアアーキテクチャ2.1 サーバー層の基本コンポーネントの紹介3. ステート...