web-dev-qa-db-ja.com

Dockerコンテナ内でプロセスマネージャを使用する利点は何ですか?

ジェローム で述べたように、

また、プロセスマネージャーを追加する必要があります。たとえば、MonitまたはSupervisor。これは、Dockerが1つのプロセスを監視するためです。複数のプロセスが必要な場合は、トップレベルに1つ追加して、他のプロセスを処理する必要があります。言い換えれば、無駄のないシンプルなコンテナをもっと複雑なものに変えているのです。

コンテナ内にプロセスマネージャが必要な理由は、私には完全にはわかりません。

では、誰かが私に説明できますか?コンテナ内にプロセスマネージャを置くことのすべての利点は何ですか?コンテナーにサービスを追加するのではなく、systemdまたはupstartにプロセスを処理させる方がよいのではないでしょうか。

7
Hyperfocus

コンテナ内でsystemd(またはupstartなど)を使用するというのが全体的なアイデアです。 Dockerは、ほとんどの場合、コンテナーごとに1つのサービスを実行するために使用されるため、複雑なサイトの場合は、Webサーバー用のコンテナーとデータベースサーバー用のコンテナーが必要になります。プロセスマネージャを使用すると、両方を同じコンテナで実行できます。

どちらのアプローチが良いかは意見に基づいています。 2014年6月の時点で、Docker内でsystemdを実行するのは簡単ではありませんが、たとえばバグがあります #3629 -「dockerArchコンテナ内でsystemdを実行するとハングまたはセグメンテーション違反が発生します」。詳細については、 "Dockerコンテナ内でsystemdを実行する" もお読みください。

5