docker常見退出碼


docker常見退出碼
Exit Code 0

退出代碼0表示特定容器沒有附加前台進程。
該退出代碼是所有其他后續退出代碼的例外。
這不一定意味着發生了不好的事情。如果開發人員想要在容器完成其工作后自動停止其容器,則使用此退出代碼。

Exit Code 1

程序錯誤,或者Dockerfile中引用不存在的文件,如 entrypoint中引用了錯誤的包
程序錯誤可以很簡單,例如“除以0”,也可以很復雜,比如空引用或者其他程序 crash

Exit Code 137

此狀態碼一般是因為 pod 中容器內存達到了它的資源限制(resources.limits),一般是內存溢出(OOM),CPU達到限制只需要不分時間片給程序就可以。因為限制資源是通過 linux 的 cgroup 實現的,所以 cgroup 會將此容器強制殺掉,類似於 kill -9
還可能是宿主機本身資源不夠用了(OOM),內核會選取一些進程殺掉來釋放內存
不管是 cgroup 限制殺掉進程還是因為節點機器本身資源不夠導致進程死掉,都可以從系統日志中找到記錄( journalctl -k )
表明容器收到了 SIGKILL 信號,進程被殺掉,對應kill -9

引發SIGKILL的是docker kill。這可以由用戶或由docker守護程序來發起,手動執行:docker kill

137 比較常見,如果 pod 中的limit 資源設置較小,會運行內存不足導致 OOMKilled,此時state 中的 ”OOMKilled” 值為true,你可以在系統的 dmesg -T 中看到 oom 日志

Exit Code 139

表明容器收到了SIGSEGV信號,無效的內存引用,對應kill -11
一般是代碼有問題,或者 docker 的基礎鏡像有問題

Exit Code 143

表明容器收到了SIGTERM信號,終端關閉,對應kill -15
一般對應docker stop 命令
有時docker stop也會導致Exit Code 137。發生在與代碼無法處理SIGTERM的情況下,docker進程等待十秒鍾然后發出SIGKILL強制退出。

Exit Code 1 和 255

這種可能是一般錯誤,具體錯誤原因只能看容器日志,因為很多程序員寫異常退出時習慣用 exit(1) 或 exit(-1),-1 會根據轉換規則轉成 255


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM