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を安全にシャットダウンする方法

推薦する

Windows でのシンプルな Mysql バックアップ BAT スクリプトの共有

序文この記事では、Windows で Mysql をバックアップするための簡単な BAT スクリプト...

Raspberry Pi 4 に Ubuntu 19.10 をインストールするための詳細なチュートリアル

以前、raspbian で実行したときに opencv の一部の依存関係をパッケージ化できず、一部の...

Reactはルーティングを使用してログインインターフェースにリダイレクトします

前回の記事では、webpack と react 環境を設定した後、ログイン インターフェースとその後...

配列をフラット化する 5 つの JavaScript の方法

目次1. 配列の平坦化の概念2. 実装1. 減らす2. toString と split 3. 結合...

CSS で中空マスク レイヤーを実装するサンプル コード

この記事の内容: ページ中空マスクレイヤー、ページ中空マスクガイドレイヤー、画像中空マスク通常のマス...

Dockerカスタムブリッジdocker0とdockerのコマンド操作の開始、終了、再起動

質問会社がサーバーを移行した後、デフォルトで作成された docker0 ブリッジが会社の外部ネットワ...

MySQL に 1,000 万件のレコードを素早く挿入する方法

面接で「MySQL に 1,000 万件のレコードをすばやく挿入するにはどうすればよいか」という質問...

LinuxシステムのAnsible自動運用保守導入方法

Ansible は、Python をベースに開発された新しい自動運用・保守ツールです。 多くの古い運...

Vueの子コンポーネントが親コンポーネントのメソッドを呼び出す場合の詳細な説明

1. 子コンポーネントのthis.$parent.eventを通じて親コンポーネントメソッドを直接呼...

VMware 仮想化 KVM のインストールと展開のチュートリアルの概要

仮想化1. 環境セントオス7.3 selinuxとファイアウォールを無効にする2. 仮想化環境の構成...

MySQL binlog を開く手順

Binlog は、MySQL データの変更を記録するために使用されるバイナリ ログ ファイルです。B...

docker で mysql に接続できない場合の解決策

シナリオ: 仮想マシンの Docker コンテナに最新バージョンの MySQL をインストールした後...

Ubuntu システムログで /var/log/messages を設定する方法

1. 問題の説明今日、システム ログ ファイルを確認する必要がありますが、/var/log/mess...

Ubuntu サーバーで MySQL を設定し、リモート接続を実装する方法

サーバー: Ubuntu Server 16.04 LSSクライアント: Ubuntu 16.04 ...

CSS3を使って歌詞進行テキストカラー塗りつぶし変更の動的効果を実装するアイデアの詳細な説明

音楽を再生すると、曲が進むにつれて歌詞が徐々に色づきます。色は単語ごとに変わるのではなく、左から右へ...