シナリオの説明 あるシステムでは、機能サービスは その結果、顧客はサーバーを再起動しました... サービスを再起動するためにサーバーにログインすると、データベース内の以前のデータが消える可能性があるという問題が見つかりました (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 の使用上の問題と解決策
1. ソフトウェアをダウンロードする1. MySQL の公式サイトにアクセスし、Oracle アカウ...
Docker を実行するには root 権限が必要です。非 root ユーザーに docker コマ...
1. 必要なパッケージをダウンロードする wget -P /usr/local https://st...
1. .jpg ではなく .gif を使用します。GIF は JPG に比べてサイズが小さくなります...
「人間中心」と「グリーンデザイン」という2つの視点から考える——デザイン業界の同僚とも議論する2つの...
目次基本的な手順と使用方法行コンポーネントの分析レンダリング機能ソースコード分析Col成分の分析コン...
1. はじめに今日、同僚から、MySQL を使用して ElasticSearch に似た全文検索機能...
序文システムをインストールしたときに、パーティション領域を適切に割り当てませんでした。その後のメンテ...
目次原因:以下を実行します: 1. コンストラクター2.レンダリング機能3.bind関数とarrow...
ジェネリックの定義 // 要件 1: ジェネリックは指定されていないデータ型をサポートできるため、渡...
圧縮アップロード画像、スクラッチカード、ポスター作成、チャートプラグインなど、フロントエンド開発にお...
HTML 構造は次のとおりです。 CCS 構造は次のとおりです。 ページ効果図は次のとおりです。 こ...
関連記事:初心者が学ぶ HTML タグ (5)導入された HTML タグは、必ずしも XHTML 仕...
1. MySQL Community Server 5.6.35をダウンロードするダウンロードアドレ...
最近、shake.jsを使用して、shakeに似た機能を作成しました。ただし、shake機能はios...