2

Docker コンテナー内で実行されているデプロイされたアプリケーションがあります。これは、事実上、永続的に実行される websocket クライアントです。展開するたびに、コンテナを再構築docker runし、Dockerfile.

現在、プロセスが再起動せずに停止することがあることに何度か気づきました。を実行するdocker psと、コンテナが稼働していて、2 週間稼働していることがわかりますが、ホストが賢明になることなく、コンテナ内で実行されているプロセスが終了しました。

コンテナー化されたプロセスを管理するために、Docker コンテナー内にプロセス マネージャーを配置する必要がありますか?

編集:

Dockerfile: https://github.com/DVG/catpen-edi/blob/master/Dockerfile

4

3 に答える 3

1

これは、PID1 に関連する非常に興味深い問題であり、docker は PID1 をCMDまたはで指定されたコマンドに置き換えますENTRYPOINT。何が起こっているかというと、親が死んで孤児になった場合、子プロセスは自動的に何にも採用されないということです (慣れ親しんだような従来の init システムの意味で PID1 がないため)。いくつかのアイデアを提供する優れた読み物を次に示します。あなたは彼らからいくらかのマイレージを得るかもしれませんbaseimage-docker簡略化された初期化システム (「my_app」) に付属するイメージは、この問題の一部を解決します。ただし、すべてのコンテナーに Phusion の考え方を自動的に採用しないように強く警告します。そのスペースにはイデオロギー上の摩擦が存在するためです。この問題を解決するための潜在的な最小限の初期化システムについて、Docker の Github での議論を思い出すことはできませんが、それが永遠に問題になるとは想像できません。幸運を!

于 2015-05-12T19:54:38.253 に答える