」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 為什麼 Debian 和 Ubuntu Docker 容器之間的標準輸出緩衝不同?

為什麼 Debian 和 Ubuntu Docker 容器之間的標準輸出緩衝不同?

發佈於2024-11-08
瀏覽:274

Why Does Stdout Buffering Differ Between Debian and Ubuntu Docker Containers?

Docker 容器中的標準輸出緩衝:Debian 與Ubuntu 的案例

在Docker 容器中執行程式碼時,標準輸出緩衝可能會發生在某些情況下,但在其他情況下則不然。在使用 io.MultiWriter 將 stdout 定向到控制台和日誌檔案的情況下會出現此問題。

根本原因:平台差異

根本原因造成此行為的原因在於基於 Debian 的映像和基於 Ubuntu 的映像之間的平台差異。 Debian 預設會緩衝 stdout,而 Ubuntu 會同步處理 stdout。

使用Dockerfiles 進行演示

這可以使用兩個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 會產生緩衝的stdout,而基於可信任映像在容器中運行它會產生緩衝的stdout同步標準輸出。但是,在沒有 Docker 的 Debian VM 上執行 procwrap 不會出現 stdout 緩衝。

解決方案選項

要解決此問題,可以考慮以下幾種方法:

  • 手動刷新輸出:修改程式碼以在每次寫入後刷新stdout operation.
  • 使用stdbuf: 嘗試使用stdbuf 指令強制stdout 不被緩衝。但是,這可能並不總是有效。
  • 配置容器設定:探索是否可以調整任何特定於容器的設定以停用 stdout 緩衝。

最終,最佳方案取決於具體的應用和運行環境。

最新教學 更多>
  • 模擬資料產生器:高效率軟體測試的關鍵
    模擬資料產生器:高效率軟體測試的關鍵
    模拟数据生成在软件测试和开发中发挥着至关重要的作用,使团队能够在不依赖实时数据的情况下模拟真实场景。无论您是测试新功能还是开发 API,模拟数据都有助于简化流程,确保测试一致、可靠,而无需访问生产数据库。 在本文中,我们将深入探讨模拟数据生成器是什么、为什么它们很重要、如何实现它们以及当今开发人员...
    程式設計 發佈於2024-11-08
  • 模擬請求
    模擬請求
    冷靜一點,提交者王,我不會談論 JSON-Server,但它值得留下來! 每個前端都會經歷模擬端點請求的需要,有時是因為後端還沒有完成其工作,有時是為了調試和模擬特定情況,這在日常生活中很常見。 是的,JSON-Server 令人難以置信並且使用起來非常簡單,但是幾天前我遇到了一個非常具體的問題...
    程式設計 發佈於2024-11-08
  • 如何在 PHP 中迭代遍歷和處理子目錄內的檔案?
    如何在 PHP 中迭代遍歷和處理子目錄內的檔案?
    如何在PHP中遍歷子目錄並迭代處理文件在PHP中,遍歷子目錄並迭代處理文件可以使用RecursiveDirectoryIterator和RecursiveIteratorIterator來實作。讓我們了解如何根據需要建立程式碼:// Initializing the path to the main...
    程式設計 發佈於2024-11-08
  • 癮君子 # 何時使用效果、Angular DI 功能、請求快取等
    癮君子 # 何時使用效果、Angular DI 功能、請求快取等
    ?嘿,Angular Addict 夥伴 這是 Angular Addicts Newsletter 的第 30 期,這是一本每月精選的引起我注意的 Angular 資源合集。 (這裡是第29期、28期、27期) ?發佈公告 ?Nx 19.8 更新 ...
    程式設計 發佈於2024-11-08
  • 如何吸引頂尖 Python 開發人員到你的公司
    如何吸引頂尖 Python 開發人員到你的公司
    在竞争激烈的技术领域,吸引顶级 Python 开发人员对于任何希望利用这种多功能编程语言的力量的组织来说至关重要。随着 Python 继续在 Web 开发、数据科学和机器学习等领域占据主导地位,对熟练 Python 开发人员的需求空前高涨。如果您想聘请能够推动创新并为您的项目做出有意义贡献的 Pyt...
    程式設計 發佈於2024-11-08
  • **JavaScript 中 `location = URL` 和 `location.href = URL` 有什麼不同?
    **JavaScript 中 `location = URL` 和 `location.href = URL` 有什麼不同?
    JavaScript:「location = URL」和「location.href = URL」的差異在JavaScript 中,操作網頁的URL 可以透過以下方式實現兩種類似的方法:直接設定location 屬性或設定location.href 屬性。雖然功能可能看起來相同,但這兩種方法之間存在...
    程式設計 發佈於2024-11-08
  • 如何有效地將PHP變數插入字串?
    如何有效地將PHP變數插入字串?
    將PHP 變數插入字串將PHP 變數合併到字串中時,注意語法以確保所需的輸出為至關重要的獲得。為了解決這個問題,讓我們檢查一下提示中顯示的程式碼:目標是包含$ width 變數在寬度樣式屬性中,並確保其後跟“px”。不幸的是,嘗試用空格分隔變數和“px”或將它們連接在一起會導致錯誤。 解決方案1:串...
    程式設計 發佈於2024-11-08
  • 了解 JavaScript 中底線 (`_`) 的使用
    了解 JavaScript 中底線 (`_`) 的使用
    在 JavaScript 中編碼時,您可能會遇到用作變數名稱的下劃線字元 (_),特別是在函數參數中。雖然乍看之下似乎很不尋常,但由於各種原因,這種做法在開發人員中很常見。在這篇文章中,我們將探討底線代表什麼,為什麼要使用它,以及它在現實範例中的顯示方式,例如 coalesceES6 函數。 ...
    程式設計 發佈於2024-11-08
  • 像程式設計師一樣思考:學習 C 基礎知識
    像程式設計師一樣思考:學習 C 基礎知識
    以程式設計師思考學習 C 語言:基本語法:變數、資料型態、常數、運算子、控制流。實戰案例:計算兩個數的平均值,輸入兩個整數並計算其平均值。 以程式設計師思考:用C 語言學習基礎引言學習程式設計並不難,尤其是當你以程式設計師思維思考時。本文將從基礎開始,用 C 語言引導你逐步了解程式設計入門知識。 C...
    程式設計 發佈於2024-11-08
  • Python 中的列表理解語法何時需要三元運算子?
    Python 中的列表理解語法何時需要三元運算子?
    列表理解難題:可迭代物件中的條件篩選在Python 中,列表理解提供了一種基於現有可迭代物件建立清單的簡潔方法。然而,出現了一個關於涉及 if 語句的列表理解的問題。 目標是比較兩個可迭代物件 a 和 b,並僅列印兩者中出現的元素。預期的程式碼如下所示:print([y if y not in b ...
    程式設計 發佈於2024-11-08
  • 使用 MetaTrader 訂單管理和市場資料收集進行自動交易
    使用 MetaTrader 訂單管理和市場資料收集進行自動交易
    Your AsimovMT class provides a comprehensive interface for interacting with MetaTrader5 (MT5) using Python. However, there are several areas in your c...
    程式設計 發佈於2024-11-08
  • Python 清單的最大大小是多少以及它如何影響功能?
    Python 清單的最大大小是多少以及它如何影響功能?
    Python列表的最大大小:綜合分析在Python中,列表是基本的資料結構,可以容納多個不同類型的元素。它們的多功能性和靈活性使得了解它們的局限性至關重要,特別是在處理大型數據集時。本文探討了 Python 清單可以達到的最大大小及其對其功能的影響。 最大清單大小Python 清單的最大大小已定義通...
    程式設計 發佈於2024-11-08
  • 託管平台清單:綜合指南
    託管平台清單:綜合指南
    在數位時代,可靠的託管平台對於任何線上展示都至關重要,無論是個人部落格、電子商務網站還是公司網站。有無數的選項可供選擇,選擇合適的託管平台可能會令人畏懼。本指南將幫助您瀏覽當今一些最好的託管平台,比較它們的功能、價格和對不同需求的適用性。 1. 藍色主機 概述:Bluehost 是...
    程式設計 發佈於2024-11-08
  • 在瀏覽器中將影片壓縮為 webm
    在瀏覽器中將影片壓縮為 webm
    ?增強您的網路影片:使用 React 將 MP4 壓縮為 WebM 工作中沒有任何有趣的事情感到無聊嗎?好吧,就在那時我決定抓緊時間修補瀏覽器 API 的當前狀態。我們可以直接透過 Web API 壓縮影片嗎?在這篇部落格中,我將向您展示如何使用現代瀏覽器功能將 MP4 影片壓縮為...
    程式設計 發佈於2024-11-08
  • 現代 PHP 中的 PHP Fiber 並發性
    現代 PHP 中的 PHP Fiber 並發性
    PHP Fibers 在 PHP 8.1 中引入,帶來了一種令人興奮的新方法來處理 PHP 中的並發和非同步程式設計。纖維可讓您在執行過程中暫停和恢復函數,使開發人員能夠更好地控制非阻塞操作,例如處理 I/O、資料庫查詢或 HTTP 請求,而無需停止整個腳本。 在本部落格中,我們將探討 PHP 纖...
    程式設計 發佈於2024-11-08

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3