Dockerはプロセス操作を管理するためにSupervisorを使用する

Dockerはプロセス操作を管理するためにSupervisorを使用する

Docker コンテナは、起動時に、たとえば ssh または apache デーモン サービスなどの単一のプロセスを開始します。

しかし、マシン上で複数のサービスを起動しなければならないことがよくあります。これを行うには多くの方法があります。最も簡単な方法は、複数の起動コマンドを起動スクリプトに入れて、起動時にスクリプトを直接起動することです。別の方法は、プロセス管理ツールをインストールすることです。

このセクションでは、プロセス管理ツール スーパーバイザーを使用して、コンテナー内の複数のプロセスを管理します。 Supervisor を使用すると、実行するプロセスをより適切に制御、管理、再起動できます。ここでは、ssh サービスと apache サービスを同時に使用する方法を説明します。

構成

まずはDockerfileを作成します。内容と各部については以下で説明します。

ubuntu:13.04から
メンテナー [email protected]
実行 echo "deb http://archive.ubuntu.com/ubuntu precise main universe" > /etc/apt/sources.list
apt-get updateを実行する
apt-get upgrade -yを実行します

ssh、apache、supervisorをインストールする

apt-get install -y openssh-server apache2 supervisorを実行します。
実行 mkdir -p /var/run/sshd
mkdir -p /var/log/supervisorを実行します。

ここでは、3 つのソフトウェアがインストールされ、ssh およびスーパーバイザ サービスの正常な動作に必要な 2 つのディレクトリが作成されます。

supervisord.conf をコピー /etc/supervisor/conf.d/supervisord.conf

supervisord 構成ファイルを追加し、対応するディレクトリにコピーします。

エクスポーズ 22 80

CMD ["/usr/bin/supervisord"]

ここでは、ポート 22 と 80 をマップし、supervisord の実行可能パスを使用してサービスを開始します。

スーパーバイザー構成ファイルの内容

[監督者]
ノーデーモン=true
[プログラム:sshd]
コマンド=/usr/sbin/sshd -D
[プログラム:apache2]
コマンド = /bin/bash -c "source /etc/apache2/envvars && exec /usr/sbin/apache2 -DFOREGROUND"

構成ファイルにはディレクトリとプロセスが含まれています。最初のセクション supervsord はソフトウェア自体を構成し、nodaemon パラメータを使用して実行します。 2 番目のセクションには、制御される 2 つのサービスが含まれています。各セクションには、サービス ディレクトリとサービスを開始するためのコマンドが含まれています。

使い方

画像を作成します。

$ sudo docker build -t test/supervisord 。

スーパーバイザー コンテナを起動します。

$ sudo docker run -p 22 -p 80 -t -i test/supervisords
2013-11-25 18:53:22,312 CRIT スーパーバイザーがルートとして実行中 (構成ファイルにユーザーなし)
2013-11-25 18:53:22,312 警告 解析中に余分なファイル「/etc/supervisor/conf.d/supervisord.conf」が含まれていました
2013-11-25 18:53:22,342 INFO supervisord が pid 1 で起動しました
2013-11-25 18:53:23,346 INFO が生成されました: pid 6 の 'sshd'
2013-11-25 18:53:23,349 INFO が生成されました: pid 7 の 'apache2'

作成したコンテナを起動するには、docker run を使用します。複数の -p を使用して複数のポートをマップし、ssh および apache サービスに同時にアクセスできるようにします。

この方法を使用すると、ssh サービスのみを含むベース イメージを作成し、このイメージに基づいてイメージを作成できます。

上記のDockerでSupervisorを使用してプロセス操作を管理する方法に関する記事は、編集者が皆さんと共有するすべての内容です。参考になれば幸いです。また、123WORDPRESS.COMを応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Docker View プロセス、メモリ、カップ消費量
  • Dockerコンテナ内で2つのプロセスを開始するときのDockerfile実装コード
  • Dockerデーモンのセキュリティ設定項目の詳細な説明
  • Dockerデーモンの設定と操作方法
  • Dockerクライアントとデーモンについての簡単な説明
  • Dockerデーモンの設定とログの詳細な説明
  • Docker コマンドラインとデーモンプロセスを操作する方法
  • プロセスからDocker分離技術を理解する

<<:  ウェブページ作成に役立つコード

>>:  MySQLを安全にシャットダウンする方法

推薦する

Workermanはmysql接続プールのサンプルコードを書きます

まず、接続プールを使用する理由と、接続プールによってどのような問題が解決できるかを理解する必要があり...

JavaScriptオフセットは、ウィンドウ内でのマウス座標の取得とモジュールのドラッグを実装します。

オフセットOffset はオフセットです。関連プロパティの offset シリーズを使用すると、次の...

MySQLデータをOracleに移行する正しい方法

mysql データベースには student テーブルがあり、その構造は次のとおりです。 Oracl...

dockerがredisを再起動するとmysqlデータが失われる問題を解決する

公式ドキュメント:したがって、mysql は次のように起動する必要があります。 docker run...

MYSQL インストールの解凍バージョンと発生したエラーと解決策

1 インストールMYSQL 公式サイトから対応する解凍バージョンをダウンロードし、必要なディレクトリ...

JavaScript におけるシリアル操作と並列操作

目次1. はじめに2. es5メソッド3. 非同期関数のシリアル実行4. 非同期関数の並列実行5. ...

統計量に対するmySql SQLクエリ操作

余計なことは言わないで、コードだけ見てみましょう〜 プロジェクト番号を選択、 sum(case wh...

MySQLデータベースインデックスの欠点と適切な使用

目次インデックスの適切な使用1. 通常のインデックスのデメリット2. 主キーインデックスの落とし穴3...

Mysql クエリの結果セットを JSON データに変換するサンプル コード

Mysql はクエリ結果セットを JSON データに変換します 序文 学生テーブル 学生スコアテーブ...

Centos サーバーで nginx を設定する方法の例

セキュアターミナルMobaXterm_Personalをダウンロードまず、安全なターミナルをダウンロ...

nginx でのリクエストのカウント追跡の簡単な分析

まずは適用方法を説明します。nginxモジュールにはjtxyとjtcmdの2つがあります。 http...

ウェブデザインのためのオンライン開発ツール10選の紹介

1. オンラインテキストジェネレーターBlindTextGenerator: デザイナーにとって、こ...

HTML チュートリアル: よく使われる HTML タグのコレクション (6)

関連記事:初心者が学ぶ HTML タグ (5)導入された HTML タグは、必ずしも XHTML 仕...

jQueryはクッキーを操作する

コードをコピーコードは次のとおりです。 jQuery.cookie = 関数(名前、値、オプション)...

CSS でベジェ曲線の実装を反転する方法

まずは、以前書いた CSS カルーセルアニメーション効果を見てみましょう。アニメーションの遷移をスム...