Dockerコンテナのセルフスタートを実装する方法

Dockerコンテナのセルフスタートを実装する方法

コンテナの自動起動

Docker は、コンテナが終了したとき、または Docker が再起動されたときにコンテナが自動的に起動するように制御できる再起動ポリシー メカニズムを提供します。この再起動ポリシーにより、関連するコンテナが正しい順序で起動されることが保証されます。このアクションはプロセス監視 (systemd など) を通じて実行することもできますが、Docker では、コンテナを「自己起動」するためにプロセス監視を使用しないことを推奨しています。

Docker の再起動ポリシーと dockerd コマンドの --live-restore 起動フラグには違いがあります。--live-restore フラグは、Docker がアップグレードされてもコンテナーが引き続き実行されることを保証しますが、ネットワークとユーザー端末の入力は中断されます。

では、再起動ポリシーとは具体的に何でしょうか?実際の状況を見てみましょう。

再起動ポリシーの使用

再起動ポリシーは、docker run を使用してコンテナを起動するときに --restart フラグで指定します。このフラグには複数の値があり、次の表に示すように、値によって動作が異なります。

フラグ説明
いいえコンテナを自動的に再起動しません。(デフォルト値)
失敗時コンテナはエラーで終了し(コンテナの終了ステータスは0ではない)、コンテナを再起動します。
停止しない限りコンテナが停止されているか、Dockerが停止/再起動されている場合にのみコンテナを再起動します。
いつもコンテナが停止されているか、Dockerが停止/再起動されている場合にのみコンテナを再起動します。

たとえば、次のコマンドは Redis コンテナを起動します。Redis コンテナが停止するか、Docker が再起動されると、Redis コンテナも再起動されます。

$ docker run -dit --restart 停止していない限り、redis

再起動ポリシーの詳細

再起動ポリシーを使用する場合は、次の詳細に注意する必要があります。

(1)再起動ポリシーはコンテナが正常に起動した後にのみ有効になります。ここでの「正常に起動」とは、コンテナが少なくとも 10 秒間起動しており、Docker によって監視されていることを意味します。これは、正常に起動されていないコンテナが再起動の無限ループに陥るのを防ぐためです。

(2)コンテナを手動で停止した場合(上記の明示的な停止との違いは何か)、Dockerデーモンを再起動するかコンテナを手動で再起動しない限り、コンテナに設定された再起動ポリシーは無視されます。これにより、新たな悪循環を回避できます。

(3)再起動ポリシーはコンテナにのみ使用できます。Swarmサービスの場合、再起動ポリシーの設定は無効です。

プロセス監視

上記の再起動ポリシーがニーズを満たせない場合は、upstart、systemd、supervisor などのプロセス監視管理ソリューションを使用することもできます。

このソリューションでは、プロセス監視サービスはコンテナ内で実行されます。プロセスが実行中かどうかを監視し、実行されていない場合はプロセスを開始できます。 Docker はこれらすべてが起こっていることをまったく認識していません。

Docker は、プロセス監視にこの方法を推奨していません。理由は簡単です。この方法は、システム プラットフォーム、さらには Linux ディストリビューションに関連しているからです。

オリジナル: https://docs.docker.com/engine/admin/start-containers-automatically/#use-a-process-manager

Dockerコンテナは起動時に自動的に起動します

docker run でコンテナを起動するときは、--restart パラメータを使用して以下を設定します。

# docker run -m 512m --memory-swap 1G -it -p 58080:8080 --restart=alway

 --name bvrfis --volumes-from ログデータ mytomcat:4.0 /root/run.sh   

--restart 特定のパラメータ値の詳細:

  • no - コンテナが終了したときに、コンテナを再起動しません。
  • on-failure - コンテナがゼロ以外のステータスで終了した場合にのみコンテナを再起動します。
  • always - 終了ステータスに関係なくコンテナを再起動します。

また、on-failure 戦略を使用するときに、Docker がコンテナの再起動を試行する最大回数を指定することもできます。デフォルトでは、Docker はコンテナを永久に再起動しようとします。

# sudo docker run --restart=on-failure:10 redis

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Docker コンテナのネットワーク障害に対する 6 つの解決策
  • Docker で複数の MySQL コンテナを作成して実行する方法の例
  • Dockerコンテナでユーザーを分離する方法
  • DockerコンテナでのMySQLデータのインポート/エクスポートの詳細な説明
  • Docker コンテナは Jenkins を使用して Web プロジェクトをデプロイします (概要)
  • Dockerコンテナ内の独立IPにアクセスする方法
  • ローカルDockerコンテナをサーバーに移行する詳細な説明
  • Docker の Tomcat コンテナで MySQL を使用する方法
  • Centos7 で Docker アプリケーション コンテナ エンジンをインストールおよびアンインストールする方法
  • Dockerコンテナの起動後にポートマッピングを追加する
  • Dockerのポートマッピングとコンテナの相互接続の詳細な説明
  • Docker チュートリアル: コンテナの使用 (簡単な例)

<<:  MAC での MYSQL5.7.17 接続失敗の問題と解決策

>>:  JSはクリックドロップ効果を実装します

推薦する

MySQL の単一テーブル クエリ操作例の詳細な説明 [構文、制約、グループ化、集計、フィルタリング、並べ替えなど]

この記事では、MySQL の単一テーブル クエリ操作について説明します。ご参考までに、詳細は以下の通...

HTML テーブル マークアップ チュートリアル (16): タイトルの水平方向の配置属性 ALIGN

デフォルトでは、表のタイトルは水平方向に中央揃えされます。ALIGN 属性を使用して、タイトル テキ...

グローバルトーストコンポーネントをカプセル化するVueの完全な例

目次序文1. vue-cliを使う1. Toastコンポーネントを定義する2. main.jsで設定...

iframeを透明にするパラメータ

<iframe src="./ads_top_tian.html" all...

MySQL 全文あいまい検索 MATCH AGAINST メソッドの例

MySQL 4.x 以降では、全文検索 MATCH ... AGAINST モード (大文字と小文字...

SQL 挿入文の書き方の説明

方法 1: INSERT INTO t1(field1,field2) VALUE(v001,v00...

Vue フロントエンド開発補助機能状態管理詳細例

目次マップ状態マップゲッターマップミューテーションマップアクション例まとめマップ状態コンポーネントが...

mysql8.0.11 winx64 手動インストールと設定チュートリアル

まず、私の日常生活についてお話しします。MySQLの急速なアップデートにより、MySQLはバージョン...

MySQL の pid とソケットの詳細な説明

目次1. pidファイルの紹介2.ソケットファイルの紹介要約:ソケット ファイル: Unix ドメイ...

動的画像読み込み技術の応用とjquery.lazyloadプラグインの使用例

アプリケーション例ウェブサイト http://www.uhuigou.net画像の動的読み込みは目新...

ウェブデザインにおける画像フォーマットとデザインの関係を詳しく説明

なぜこの領域のコンテンツを整理したいのでしょうか。それは、油絵の具とキャンバスを理解する必要があり、...

docker-compose でデプロイしたときに MySQL にアクセスできなくなる問題の簡単な分析

Docker-ComposeとはCompose プロジェクトは、以前の fig プロジェクトから派生...

MySQL でデータ テーブルを作成し、主キーと外部キーの関係を確立する方法の詳細な説明

序文MySQL テーブルの主キーと外部キーを作成するときは、次の点に注意する必要があります。主キーと...

JavaScript で長い画像のスクロール効果を実装する

この記事では、JavaScriptの長い画像スクロールの具体的なコードを参考までに共有します。具体的...

Ubuntu の起動後にアプリケーションを実行するためのターミナルの設定方法

1.メニューバーにスタートと入力し、スタートアップアプリケーションをクリックして入力します。 2. ...