Docker 容器中的標準輸出緩衝:Debian 與Ubuntu 的案例
在Docker 容器中執行程式碼時,標準輸出緩衝可能會發生在某些情況下,但在其他情況下則不然。在使用 io.MultiWriter 將 stdout 定向到控制台和日誌檔案的場景中會觀察到此問題。
根本原因:平台差異
根本原因造成此行為的原因在於基於 Debian 的映像和基於 Ubuntu 的映像之間的平台差異。 Debian 預設會緩衝 stdout,而 Ubuntu 會同步處理 stdout。
使用Dockerfile 進行演示
這可以使用兩個Dockerfile 進行說明,一個基於Debian:wheezy 和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 會產生緩衝的標準輸出,而在基於trusty 影像的容器中運行它會產生同步的標準輸出。但是,在沒有 Docker 的 Debian VM 上執行 procwrap 不會出現 stdout 緩衝。
解決方案選項
要解決這個問題,可以考慮以下幾種方法:以上是為什麼 Debian 和 Ubuntu Docker 容器之間的標準輸出緩衝不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!