シナリオの説明 あるシステムでは、機能サービスは その結果、顧客はサーバーを再起動しました... サービスを再起動するためにサーバーにログインすると、データベース内の以前のデータが消える可能性があるという問題が見つかりました (docker run を使用してサービスを再度開始する場合)。 解決 試行 1 最初はデータが確実に失われたと思ったので、再度データを復旧する必要がありましたが、作業量が膨大すぎました... でも仕方がない、次回起動時にストレージをハードディスクにマウントするだけだ、Orz しかし、同僚と話し合った結果、より簡単な(ただし永続的ではない)解決策を見つけました。試行 2 を参照してください。 試行2 同僚によると、 後で考えてみると、docker によって起動されたイメージのデータがマッピングされていない場合、そのデータはデフォルトのボリュームに保存されます。docker restart xxx でコンテナを再起動しても、変更されたデータはそのまま残ります。つまり、この時点では、サーバーが再起動され、コンテナがハングアップしています (docker ps を使用して表示すると、コンテナのステータスは Exited です)。ただし、実際には、以前のデータはデフォルトのボリュームに残っており、変更されたデータはコンテナが削除された場合にのみ失われます。 検証テスト イメージをパックし、コンテナを起動し、ファイルを作成し、停止し、再度起動して、ファイルが存在するかどうかを確認するだけです。 # コンテナを起動します ➜ docker_start_test docker run -itd --name docker_run_test 4cbf48630b46 ping 127.0.0.1 d6278f537113122d4ccbe00950790750215c5a09002bcbd1ef6f9e660fc9eaac ➜ docker_start_test docker ps -a コンテナID イメージ コマンド 作成ステータス ポート名 d6278f537113 4cbf48630b46 "ping 127.0.0.1" 3秒前 2秒前 docker_run_test # コンテナにファイルを追加 ➜ docker_start_test docker exec -it docker_run_test /bin/sh sh-4.2#パスワード / sh-4.2# タッチテスト sh-4.2# 終了 出口 # コンテナを再起動します ➜ docker_start_test docker stop docker_run_test docker_run_test ➜ docker_start_test docker ps -a | grep docker_run_test d6278f537113 4cbf48630b46 "ping 127.0.0.1" 約1分前 終了しました (137) 12秒前 docker_run_test # ファイルが存在するか確認します ➜ docker_start_test docker start docker_run_test docker_run_test ➜ docker_start_test docker exec -ti docker_run_test /bin/sh sh-4.2# ls anaconda-post.log bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys test tmp usr var ご覧のとおり、ファイル test はまだ存在しています。コンテナを停止し、docker rm を使用してコンテナを削除し、同じ名前のコンテナを再起動すると、コンテナ内に test ファイルがないことがわかります。 # コンテナを停止/rm ➜ docker_start_test docker stop docker_run_test docker_run_test ➜ docker_start_test docker ps -a | grep docker_run d6278f537113 4cbf48630b46 "ping 127.0.0.1" 7 分前 終了 (137) 13 秒前 docker_run_test ➜ docker_start_test docker rm d6278f537113 d6278f537113 # 同じ名前で新しいコンテナを起動します ➜ docker_start_test docker run -itd --name docker_run_test 4cbf48630b46 ping 127.0.0.1 99a6f5df0a86e4c07abf184e322a23e4fbec89ff354691459cdac8fcd8687ba3 # 検証するコンテナに入る ➜ docker_start_test docker exec -ti docker_run_test /bin/sh sh-4.2# ls anaconda-post.log bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var sh-4.2# ls テスト ls: テストにアクセスできません: そのようなファイルまたはディレクトリはありません docker runの手順 公式サイトによると、start コマンドの機能は次のとおりです。 うーん、かなり単純で、言うことはあまりないですね 追伸 実際、コンテナのストレージディレクトリをマウントするのが最善の方法です...また、一般的に言えば、コンテナを使用してデータベースサービスを起動すべきではないようです 要約する 上記は、docker run によって起動されたコンテナがデータをハングアップした場合の対処方法について紹介したものです。お役に立てば幸いです。ご質問がある場合は、メッセージを残してください。すぐに返信いたします。また、123WORDPRESS.COM ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。 以下もご興味があるかもしれません:
|
<<: Vue3 での Teleport の使用に関する詳細な説明
>>: MySQL データベース監視ソフトウェア lepus の使用上の問題と解決策
前回のキャンバス ゲーム シリーズへようこそ: 《VUEがFlappy Birdを実装しました〜〜〜...
最近、プロジェクトで選択クエリを使用する際に、未使用の主キー ID を除外するために not in ...
序文:さまざまな技術職の面接では、MySQL 関連の質問がよくされるようです。開発職の面接でも運用職...
最近、shake.jsを使用して、shakeに似た機能を作成しました。ただし、shake機能はios...
この記事では、支払いの10秒カウントダウンを実現するためのJavaScriptの具体的なコードを参考...
MySQLとElasticsearch間のデータ非対称性問題の解決策jdbc-input-plugi...
1. 事前に準備する便宜上、ここで 2 つのテーブルを作成し、そこにいくつかのデータを追加します。果...
解決 関数 mergeImgs(リスト) { const imgDom = document.cre...
目次必要:ドライブ:アイデア:成し遂げる:個人的には、実際の開発ではストアド プロシージャの使用はお...
Centos7.6 に Tomcat-8.5.39 をインストールする方法は次のとおりです。詳細は次...
この記事では、JavaScriptのランダムロールコールテーブルの具体的なコードを参考までに紹介しま...
1.公式サイトからインストールパッケージをダウンロードするhttp://nginx.org/en/d...
次のケースでは、これまでに学んだプロトタイプチェーンの知識ポイントを確認します。 // コンストラク...
目次1.entires() メソッドの詳細な構文2.entires() メソッドの一般的な使用法と注...
どちらの方法も、一定時間後に JavaScript コードを実行するために使用できますが、それぞれに...