Docker 容器中的stdout 緩衝
問題:
分析: 問題在於 stdout 緩衝行為容器的。預設情況下,stdout 緩衝在 Docker 容器中,這表示收集輸出直到達到特定限製或觸發刷新。這可能會導致在執行產生大量資料的進程時出現間歇性輸出。 原因: stdout 緩衝是 Docker 繼承的 Linux 核心功能容器。它透過減少對主機檔案系統的寫入次數來優化系統效能。 解決方案: 有多種方法可以克服Docker 容器中的stdout 緩衝: 範例: 在提供的範例中,以下程式碼片段可用於停用標準輸出緩衝:
<code class="go">cmd := exec.Command("ping", "127.0.0.1")
cmd.Stdout = io.MultiWriter(os.Stdout, logWriter)
cmd.Env = append(os.Environ(), "unbuffer=true")
err := cmd.Run()</code>
以上是為什麼 Docker 容器中會出現標準輸出緩衝?的詳細內容。更多資訊請關注PHP中文網其他相關文章!