ホームページ  >  記事  >  運用・保守  >  Docker コンテナを使用して終了せずに実行する方法

Docker コンテナを使用して終了せずに実行する方法

PHPz
PHPzオリジナル
2023-04-20 10:09:235595ブラウズ

Docker は、開発者がアプリケーションとそのすべての依存関係を、展開および管理のためにポータブル コンテナにパッケージ化できる環境を提供するオープン ソースのコンテナ化プラットフォームです。 Docker コンテナの利点は、高速で軽量、強力な分離性と移植性があることです。ただし、実際のアプリケーションでは、サービスが正常かつ安定して実行されることを保証するために、実行直後に Docker コンテナーを終了しない機能が必要になることがよくあります。

この記事では、Docker コンテナを終了せずに実行する方法を紹介します。

1. Bash メソッドを使用して、終了せずにコンテナーを実装します。

Bash メソッドを使用して、終了せずに Docker コンテナーを実装します。次のコマンドを実行する必要があります:

docker run -it --name=容器名称 --restart=always 镜像名称 /bin/bash

このコマンドでは、「Docker コンテナの起動モードは、コンテナ名という名前の対話型ターミナルです」と指定します。コンテナ名は、再起動後にデフォルトの起動名に設定されます。コンテナーが異常終了しないようにします。それ自体を復元することはできません。 --restart=always は、Docker コンテナーがクラッシュまたは停止したときにコンテナーを再起動する必要があることを指定するために使用され、Docker はコンテナーを自動的に再起動します。最後の イメージ名 は、コンテナーの起動に使用するイメージを示します。

2. Python スクリプトを使用してコンテナーの終了を防止する

Bash の使用に加えて、Python スクリプトを使用して Docker コンテナーの終了を防止することもできます。以下は Python スクリプトです:

import time
while True:
    time.sleep(60)

このコードを run.py ファイルとして保存し、次の行を Dockerfile に追加します:

CMD python /app/run.py

次に、 # を使用します。 ##docker buildこのコマンドは、Dockerfile をイメージとしてビルドし、次のコマンドを使用してコンテナーを実行します:

docker run -d --restart=always 镜像名称
このコマンドでは、Docker コンテナーがバックグラウンド モードで開始されることを指定します。 、イメージ名は以前に構築されたものです。

--restart=always は、Docker コンテナーがクラッシュまたは停止したときにコンテナーを再起動する必要があることを指定するためにも使用されます。

3. スーパーバイザーを使用してコンテナーの終了を防止する

スーパーバイザーは、Docker コンテナー内で実行されているプロセスを監視および制御するために使用できるプロセス マネージャーです。スーパーバイザーを使用すると、コンテナ内のプロセスのヘルスチェックを実行し、プロセスがクラッシュした場合でも自動的に再起動してプロセスが実行を継続していることを確認できます。

    まず、コンテナの起動時にスーパーバイザーが適切に実行されるように、次の行を Dockerfile に追加する必要があります。
  1. RUN apt-get update && apt-get install -y supervisor
    RUN systemctl enable supervisor
    ADD supervisor.conf /etc/supervisor/conf.d/
    次に、どのプロセスを監視する必要があるか、およびそれらの実行方法を定義するスーパーバイザ .conf 構成ファイルを定義します。以下は、
  1. supervisor.conf ファイルの単純なバージョンです。
  2. [supervisord]
    nodaemon=true
    
    [program:your_application_name]
    command=/bin/bash -c "while true; do echo hello world; sleep 10; done"
この構成ファイルでは、

your_application_name という名前のプログラムを定義し、次のように指定します。 /bin/bash コマンドで実行され、echo hello world; sleep 10; コマンドが無限ループで実行されます。

    最後に、コンテナが起動したら、次のコマンドを使用してスーパーバイザを起動する必要があります:
  1. /usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf
このコマンドでは、

-n を渡します。 パラメーター。スーパーバイザー プロセスがフォアグラウンドで実行されるように設定します。スーパーバイザは起動時に、/etc/supervisor/conf.d/ ディレクトリ内のすべての設定ファイルを検出し、それらを使用してコンテナ内のプロセスを管理します。

結論

この記事では、終了せずに Docker コンテナを実行する機能を実現する 3 つの方法 (Bash メソッド、Python スクリプト、スーパーバイザー プロセス マネージャーの使用を含む) を説明しました。それぞれの方法には利点と適用範囲があり、実際のアプリケーションでは、状況に応じて適切な方法を選択する必要があります。この記事が役に立ち、Docker コンテナーの動作をより確実に保証できることを願っています。

以上がDocker コンテナを使用して終了せずに実行する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。