Docker コンテナでの標準出力バッファリング: Debian と Ubuntu のケース
Docker コンテナでコードを実行すると、標準出力バッファリングが発生する可能性があります。一部のインスタンスではそうではありません。この問題は、io.MultiWriter を使用して標準出力がコンソールとログ ファイルの両方に送信されるシナリオで発生します。
根本原因: プラットフォームの違い
ルートこの動作の原因は、Debian ベースのイメージと Ubuntu ベースのイメージのプラットフォームの違いにあります。 Debian はデフォルトで stdout をバッファリングするようですが、Ubuntu は stdout を同期的に処理します。
Dockerfile を使用したデモンストレーション
これは、Debian:wheezy と 2 つの Dockerfile に基づく 2 つの Dockerfile を使用して説明できます。もう 1 つは Ubuntu:trusty:
# TRUSTY Dockerfile FROM ubuntu:trusty # ... (rest of the Dockerfile as provided in the problem description) # WHEEZY Dockerfile FROM debian:wheezy # ... (rest of the Dockerfile as provided in the problem description)
Wheeze イメージに基づいてコンテナ内で procwrap を実行すると、バッファリングされた stdout が生成されますが、trusty イメージに基づいてコンテナ内で実行すると同期 stdout が生成されます。ただし、Docker を使用せずに Debian VM 上で procwrap を実行しても、標準出力バッファリングは発生しません。
解決オプション
この問題を解決するには、いくつかのアプローチが検討できます。
最終的に、最適なソリューションは、特定のアプリケーションと動作環境によって異なります。
以上がDebian と Ubuntu の Docker コンテナで Stdout バッファリングが異なるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。