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

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

推薦する

Dockerイメージストレージoverlayfsの使用

1. 概要Docker のイメージはレイヤーで設計されています。各レイヤーは「レイヤー」と呼ばれます...

Linux 上のカラフルな猫

Linux システムを使用したことがある友人なら、 catコマンドを使用したことがあるはずです。もち...

Xshellの一般的な問題と関連する設定の詳細な説明

この記事では、Xshell と関連する構成の一般的な問題について説明します。この記事の構成は、主に ...

自動行折り返し機能付き CSS Flex レイアウトのサンプル コード

フレックス コンテナーを作成するには、要素に display: flex プロパティを追加するだけで...

Tomcat でよく使われるフィルターの詳細な説明

目次1. クロスドメインフィルタ CorsFilter 1.1 設定例1.2 パラメータの説明2. ...

DIVのぼかし機能を実装する方法

マウスを動かしたときにDIVが消えるように手ぶれ補正を使用するdiv タグ自体は onblur イベ...

SCSS スタイルのコードを 50% 削減する 14 の実践的な経験

序文Sass は CSS3 言語の拡張機能です。Sass を使用すると、より良いスタイルシートをより...

jQueryはシンプルなポップアップウィンドウ効果を実装します

この記事では、簡単なポップアップウィンドウ効果を実現するためのjQueryの具体的なコードを参考まで...

発生したブラウザの互換性の問題と解決策(推奨)について

序文:先週の日曜日、先輩から3ページ作るのを手伝って欲しいと頼まれました。データのやり取りなどはなく...

MySql 組み込み関数の自習知識ポイントまとめ

文字列関数文字ascii(str)のASCIIコード値をチェックし、strが空の文字列の場合は0を返...

JSON.stringify のさまざまな用途のまとめ

序文json を使用したことがある人なら、オブジェクトを文字列化してからバックエンドに送信するのが一...

Nginx イントラネット スタンドアロン リバース プロキシの実装

目次1 Nginxのインストール2 Nginxの設定3 ホストファイルを変更する4 テストNginx...

Mapper SQL ステートメント フィールドとエンティティ クラス属性名の関係は何ですか?

背景: 1. データベースに通知テーブルがある あなたは見ることができますgmt_create、通知...

WeChat アプレット wxs 日付と時刻処理の実装例

目次1. 日付までのタイムスタンプ2. UTCを北京時間に変換するWXS (WeiXin Scrip...

Vue グローバルメソッドを設定する 2 つの方法

目次1. はじめに2. 最初の方法3. 2番目の方法要約する1. はじめにVue プロジェクトの開発...