シナリオの説明 あるシステムでは、機能サービスは その結果、顧客はサーバーを再起動しました... サービスを再起動するためにサーバーにログインすると、データベース内の以前のデータが消える可能性があるという問題が見つかりました (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 の使用上の問題と解決策
この記事は、2018 年 9 月 19 日に Adobe Systems Inc で開催された ...
HTML 入力属性値属性value 属性は、入力フィールドの初期値を指定します。 <フォーム...
取引特性1. アトミック性: トランザクションの開始後、すべての操作が完了するか、まったく実行されな...
この記事では、ビュー、トランザクション、インデックス、自己接続、ユーザー管理など、MySQL データ...
擬似要素と擬似クラスところで、まずは疑似クラスセレクターと疑似要素セレクターについておさらいしておき...
HTML タグには、ページのタイトルを処理するための特別なタグがあります。これらは h1、h2、h3...
序文日常の開発では、MySQL を使用してページングを実装する場合、常に MySQL 制限構文を使用...
1. はじめに(1)vw/vhの紹介使用する前に、vw と rem とは何か、その機能について簡単に...
目次開発環境用のDocker-ceをインストールする開発環境用のDocker-composeをインス...
目次序文インストール導入環境の切り替え傍受を要求するレスポンスインターセプションAPIの統合管理要約...
目次JavaScript 関数呼び出しの典型的な例JS関数の定義と呼び出し方法要約するJavaScr...
コードをコピーコードは次のとおりです。 <object classid="clsid...
序文この記事は、私が最近仕事で遭遇した問題を記録したものです。アプリネイティブとフロントエンドのh5...
この記事では、SMS送信のカウントダウンを実装するためのJavaScriptの具体的なコードを参考ま...
実際、Apacheクラスタを構築するのは難しくありません。私もインターネットで情報を見つけて自分で設...