実行中のコンテナが終了したときに、コンテナが完全に終了する前に環境をクリーンアップするなど、いくつかの定義済みアクションを実行するにはどうすればよいでしょうか。これはプレストップに似たフック体験です。ただし、Docker 自体はこの機能を提供することはできません。この記事では、Linux 組み込みコマンド トラップを組み合わせて、コンテナーが正常に閉じられる前にカスタム操作を実装します。 実行中のコンテナが終了したときに、コンテナが完全に終了する前に環境をクリーンアップするなど、いくつかの定義済みアクションを実行するにはどうすればよいでしょうか。これはプレストップに似たフック体験です。ただし、Docker 自体はこの機能を提供することはできません。この記事では、Linux 組み込みコマンド トラップを組み合わせて、コンテナーが正常に閉じられる前にカスタム操作を実装します。 コンテナを閉じる方法実行中のコンテナをシャットダウンする方法は 3 つあり、いずれも docker コマンドラインによって開始されると理解しています。
Docker の設計者は、理由もなくコンテナをシャットダウンするための 3 つのコマンドの組み合わせを設計することはありません。どのようなシナリオで 3 つの方法を使用すべきでしょうか? コンテナを終了するこれら 3 つの方法は、それぞれ若干異なります。これらの違いを説明する前に、コンテナとは関係ないと思われるいくつかの知識ポイント、つまり SIGNAL について触れておく必要があります。 プロセスとシグナルユーザーはシグナルを送信することでプロセスと通信できます。 ほぼすべての運用および保守エンジニアは、プロセスを強制終了するために次のコマンドを実行したことがあります。
このコマンドは正しいようです。プロセスを「強制終了」しましたが、なぜ「-9」なのでしょうか? 9 はシグナル SIGKILL のコードです。上記のコマンドは、実際に対応するプロセスにシグナルを送信します。このシグナルによって、プロセスが強制終了されます。
各信号の意味を詳しく説明するつもりはありません。私のスキルはまだそこまでには程遠いです。ここでは、私たちのトピックに関連する知識だけを取り上げ、説明します。 私たちのトピックに関連するシグナルは
コンテナとシグナルコンテナの本質は、カプセル化されたプロセスのグループです。したがって、冒頭で述べた 3 つのコマンド ライン メソッドを使用して実行中のコンテナーを閉じることは、本質的には、コンテナー内のプロセスと対話してプロセスを「強制終了」するシグナルを送信するプロセスです。
比較すると、実行中のコンテナを停止するために さて、いよいよ本題に入りましょう。 信号をキャプチャして処理するシグナル Linux には、シグナルをキャプチャし、プロセスが完全に終了する前に特定のタスクが実行されるようにする組み込みの
基本的な使い方は以下のとおりです。
アイデアは明確です。コンテナが終了する前に実行する必要があるすべての処理を完了するには、コンテナの起動スクリプトに 以下は、コンテナの ENTRYPOINT として実行されるスクリプトの例です。 #!/bin/bash 関数 clean_up_term { rm -rf /データ/tmp echo "clean_up_term が実行中" } トラップ clean_up_term SIGTERM ((i=1;i<=1000;i++)) の場合 する echo "$i を待つ" 睡眠1 終わり コンテナが起動したら、別のターミナルから
これで、docker コンテナが正常に終了する前に、trap を使用して環境のクリーンアップを実行する方法についての説明は終了です。docker コンテナ実行環境のクリーンアップの詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: 中国語と英語のフォント名の比較表(FounderとArphicを含む)
前回の記事「202 個の無料高品質 XHTML テンプレート (1)」に続き、123WORDPRES...
シェル スクリプトで電子メールを作成する必要がある場合は、コマンド ラインから電子メールを送信する知...
まず第一に、私はウェブデザイナーです。具体的には、私は XHTML フロントエンド デザイナーです。...
JavaScript でポインターの位置を取得する方法は、イベント オブジェクトの pageX と ...
目次背景ターゲット効果アイデア成し遂げるスワイパーは変更を聞きますカスタムドットモジュール変更イベン...
1. 入力・貼り付けできるのは中国語のみ<input onkeyup="value=...
1. 準備1.1 Pythonインストールパッケージをダウンロードします(注:Pythonバージョン...
最近、MySQL オンラインでいくつかのデータ異常が発生しましたが、すべて早朝に発生しました。ビジネ...
参考までに、jsを使用して照明スイッチを制御します。具体的な内容は次のとおりです。トピック: js ...
クイックリーディングSQL ステートメントを監視する必要があるのはなぜか、監視方法と監視手段について...
1. イベントが有効になっているかどうかを確認する'%sche%' のような変数を表...
前提条件: データベースを復元するために必要な .frm ファイルと .ibd ファイルを保存します...
RDF と OWL は、2 つの重要なセマンティック ウェブ テクノロジーです。 RDF と OWL...
シンプルなシームレススクロールカルーセルには多くの抜け穴があり、後から画像を追加するのは非常に不便で...
1. 新しいユーザーwwweee000を作成します [root@localhost ~]# user...