14

systemd のソケット アクティベーション機能を使用して、ポートを公開 (リッスン) する Web サーバーなどの個々の Docker コンテナーを起動できますか? アイデアは、コンテナーが実際に初めて必要になったときにのみコンテナーを開始することによってリソースを節約することです (そして、リソースを節約するためにアイドル状態になったときにコンテナーを再び停止する可能性があります)。

注: この質問は、ソケット アクティベーション (既にサポートされています)を使用して Docker デーモン自体を起動することに関するものではなく、個々のコンテナーをオンデマンドで起動することに関するものです。

4

3 に答える 3

12

要するに、できません。

ただし、ソリューションにアプローチしたい場合は、最初に、systemd サービスで各 Docker コンテナーを実行するCoreOSgeardなどのツールを実行する必要があります。

それでも、ソケットを継承するための Docker のサポートはなくなりました。私は、ギアードが安定したサポートに取り組んでいることを知っています。CoreOS は、Go でのソケット アクティベーションの一般化されたサポートを公開しました。Red Hat関係者は、Fedora の Docker パッケージに関連するパッチを追加して、Go のソケット アクティベーション ライブラリを使用し、それを機能させるための重要なコンポーネントである「フォアグラウンド モード」を改善しています。

(私はコンテナのソケット アクティベーションに関する Lennart の初期の記事の David Straussです。このトピックは非常に興味深いものです。Red Hat のパッチの作成者に電子メールを送信し、geard チームに連絡しました。この回答を維持するように努めます。更新しました。)

于 2014-09-04T16:42:39.667 に答える
2

systemd を使用する必要がある場合は、先月、それに関するブログ記事がここにありました(まだ試していません)。

テクノロジーの選択が難しい制約でない場合は、お気に入りのプログラミング言語で小さなプロキシを作成し、Docker API 呼び出しを行ってコンテナーが確実に開始されるようにすることができます。これが、snickers (私の実験的な nodejs プロキシ) のやり方です

于 2015-04-05T12:11:02.153 に答える