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でカルーセル画像を作成する方法

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

推薦する

WeChatアプレットリクエストの前処理方法の詳細な説明

質問一部のページでは、onload でデータを要求してからビューをレンダリングするため、ミニプログラ...

Vueは動的ルーティングの詳細を実装します

目次1. フロントエンド制御1. router.js ファイル内 (router.js にそれぞれ静...

JavaScriptを使用してページ効果を作成する

11. JavaScriptを使用してページ効果を作成する11.1 DOMプログラミングDOM プロ...

HTMLのフォントがline-heightを指定しても垂直方向に中央揃えできない問題の解決方法を詳しく説明します

による写真に示されている効果を例に挙げてみましょう。明らかに、「次へ」というテキストを水平方向だけで...

Vue 実践における実用的な小さな魔法のまとめ

初回の読み込みを高速化できるルートの遅延読み込みをどうして忘れられるでしょうか?ルーティングの遅延読...

MySQL カーソルの概念と使用法の詳細な説明

この記事では、例を使用して MySQL カーソルの概念と使用方法を説明します。ご参考までに、詳細は以...

JSONデータをHTMLで表示する方法

背景:場合によっては、json データをページに直接表示する必要があります (たとえば、インターフェ...

バッチモードでtopコマンドを実行する方法

top コマンドは、Linux システムのパフォーマンスを監視するために誰もが使用している最適なコマ...

MySQL 8.0.21.0 コミュニティ エディションのインストール チュートリアル (詳細な図解)

1. MySQLをダウンロードするMySQL 公式 Web サイトにログインし、MSI インストー...

CentOS7にMySQL 8.0.26をインストールする手順

1. まず、お使いのマシンに応じて、MySQL 公式サイトから対応するデータベースをダウンロードしま...

Docker Compose ネットワーク設定の説明

基本概念デフォルトでは、Compose はアプリケーション用のネットワークを作成し、サービスの各コン...

JavaScript 変数の昇格についての簡単な説明

目次序文1. どのような変数が促進されますか? 2. 可変プロモーションがあるのはなぜですか? (1...

CocosCreator で物理エンジン ジョイントを使用する方法

目次マウスジョイント マウスジョイント距離ジョイント距離ジョイントモータージョイント直動ジョイント変...

MySQLの読み書き分離により挿入後にデータが選択されなくなる問題を解決

MySQLは独立した書き込み分離を設定します。コードに次のものを書くと問題が発生する可能性があります...

Navicatを使ってMySQLを操作する方法

目次序文: 1. Navicatの紹介2. シンプルなチュートリアルの共有接続管理ライブラリテーブル...