0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

Docker容器退出碼是什么意思?導致該退出碼的動作是什么

馬哥Linux運維 ? 來源:徐亞松(占洋) ? 作者:徐亞松(占洋) ? 2022-08-02 09:55 ? 次閱讀

為什么我的容器沒有運行?

回答這個問題需要知道 Docker 容器為什么退出,退出碼會提示容器停止運行的情況。本文列出了最常見的退出碼,來回答兩個重要問題:

這些退出碼是什么意思?

導致該退出碼的動作是什么?

exit code:代表一個進程的返回碼,通過系統(tǒng)調(diào)用 exit_group 來觸發(fā)。在 POSIX 中,0 代表正常的返回碼,而 1-255 代表異常返回碼,不過一般錯誤碼都是 1。這里有一張附表 Appendix E. Exit Codes With Special Meanings

如何查看退出碼

方法一:查看 pod 中的容器退出碼

$kubectldescribepodxxx

74a515f8-11a5-11ed-ba43-dac502259ad0.jpg

方法二:用 Docker 查看

$ dockerps--filter"status=exited"
$ dockerinspect--format='{{.State.ExitCode}}'

方法三:手動輸出

$ dockercontainerrunalpinesh-c"exit1"

$dockercontainerls-a

CONTAINERIDIMAGECOMMANDCREATEDSTATUS
61c688005b3aalpine"sh-c'exit1'"AboutaminuteagoExited(1)3secondsago

常見退出碼

Exit Code 0

退出代碼0表示特定容器沒有附加前臺進程。

該退出代碼是所有其他后續(xù)退出代碼的例外。

這不一定意味著發(fā)生了不好的事情。如果開發(fā)人員想要在容器完成其工作后自動停止其容器,則使用此退出代碼。

如果你執(zhí)行 docker run hello-world, 你會得到“Hello from docker!”,但查看容器的時候docker ps -a | grep hello-world,會發(fā)現(xiàn)狀態(tài)碼為 0

74b736d4-11a5-11ed-ba43-dac502259ad0.jpg

Exit Code 1

程序錯誤,或者 Dockerfile 中引用不存在的文件,如 entrypoint 中引用了錯誤的包

程序錯誤可以很簡單,例如 “除以0”,也可以很復雜,比如空引用或者其他程序 crash

Exit Code 137

表明容器收到了 SIGKILL 信號,進程被殺掉,對應 kill -9

引發(fā) SIGKILL 的是 Docker Kill。這可以由用戶或由 Docker 守護程序來發(fā)起,手動執(zhí)行:docker kill

137 比較常見,如果 pod 中的 limit 資源設置較小,會運行內(nèi)存不足導致 OOMKilled,此時 state 中的 "OOMKilled" 值為 true,你可以在系統(tǒng)的 dmesg 中看到 oom 日志

Exit Code 139

表明容器收到了 SIGSEGV 信號,無效的內(nèi)存引用,對應 kill -11

一般是代碼有問題,或者 docker 的基礎鏡像有問題

Exit Code 143

表明容器收到了 SIGTERM 信號,終端關閉,對應 kill -15

一般對應 docker stop 命令

有時 docker stop 也會導致 Exit Code 137。發(fā)生在與代碼無法處理 SIGTERM 的情況下,docker 進程等待十秒鐘然后發(fā)出 SIGKILL 強制退出。

不常用的一些 Exit Code

Exit Code 126: 權限問題或命令不可執(zhí)行

Exit Code 127: Shell 腳本中可能出現(xiàn)錯字且字符無法識別的情況

Exit Code 1 或 255:因為很多程序員寫異常退出時習慣用 exit(1) 或 exit(-1),-1 會根據(jù)轉換規(guī)則轉成 255。這個一般是自定義 code,要看具體邏輯。

退出狀態(tài)碼的區(qū)間

必須在 0-255 之間,0 表示正常退出

外界將程序中斷退出,狀態(tài)碼在 129-255

程序自身異常退出,狀態(tài)碼一般在 1-128

假如寫代碼指定的退出狀態(tài)碼時不在 0-255 之間,例如: exit(-1),這時會自動做一個轉換,最終呈現(xiàn)的狀態(tài)碼還是會在 0-255 之間。我們把狀態(tài)碼記為 code,當指定的退出時狀態(tài)碼為負數(shù),那么轉換公式如下:256 – (|code| % 256)



審核編輯:劉清


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Docker
    +關注

    關注

    0

    文章

    458

    瀏覽量

    11857
  • docker容器
    +關注

    關注

    0

    文章

    30

    瀏覽量

    3326
收藏 人收藏

    評論

    相關推薦

    設備能識別哪些類型的 工業(yè)二維掃描設備有什么推薦產(chǎn)品

    在當今智能制造與數(shù)字化轉型的浪潮中,掃設備作為信息識別與采集的關鍵工具,其重要性日益凸顯。從簡單的條形碼到復雜多變的二維,再到專為工業(yè)環(huán)境設計的工業(yè)二維,掃技術的應用范圍不斷拓
    的頭像 發(fā)表于 12-18 15:13 ?118次閱讀
    掃<b class='flag-5'>碼</b>設備能識別哪些類型的<b class='flag-5'>碼</b> 工業(yè)二維<b class='flag-5'>碼</b>掃描設備有什么推薦產(chǎn)品

    如何使用ASCII進行編碼

    ASCII(American Standard Code for Information Interchange,美國信息交換標準代碼)是一種字符編碼標準,用于文本電子交換。它主要包括128個字符
    的頭像 發(fā)表于 11-10 09:37 ?594次閱讀

    容器在運行中電壓超過額定電壓需要退出運行嗎

    當電容器運行中的電壓超過額定電壓時,通常需要采取措施。如果電壓超出額定電壓的幅度較大且持續(xù)時間較長,建議將電容器 退出運行 ,以避免損壞設備。以下是一些考慮因素: 電容器的過電壓耐受能
    的頭像 發(fā)表于 09-19 14:44 ?1259次閱讀
    電<b class='flag-5'>容器</b>在運行中電壓超過額定電壓需要<b class='flag-5'>退出</b>運行嗎

    新大陸掃器哪款能夠識別DPM?新大陸二維器介紹

    隨著工業(yè)自動化的不斷發(fā)展,二維和數(shù)據(jù)矩陣(DPM)在生產(chǎn)、物流和倉儲等領域的應用越來越廣泛。DPM因其高密度和小體積的特點,常常被應用于金屬、塑料等各種材料的直接標記。這就對掃
    的頭像 發(fā)表于 07-29 14:36 ?380次閱讀
    新大陸掃<b class='flag-5'>碼</b>器哪款能夠識別DPM<b class='flag-5'>碼</b>?新大陸二維<b class='flag-5'>碼</b>掃<b class='flag-5'>碼</b>器介紹

    ARM平臺實現(xiàn)Docker容器技術

    restart 圖24 (2)創(chuàng)建并啟動容器。由于Docker使用VFS存儲驅(qū)動程序,當創(chuàng)建容器時,需要先創(chuàng)建容器層,
    發(fā)表于 07-25 14:36

    ARM平臺實現(xiàn)Docker容器技術

    創(chuàng)建容器層,容器層需要對上一層進行“深拷貝”,因此完成創(chuàng)建并啟動容器整個過程需要耗時約1min,請耐心等待。 Target#docker
    發(fā)表于 07-17 11:05

    固定讀器怎么選型 工業(yè)二維器推薦

    器選型是一項重要的決策過程,涉及到多個因素的考慮。在選擇讀器時,我們需要根據(jù)實際應用環(huán)境、使用方式、預算、需求以及與其他設備或系統(tǒng)的兼容性等方面進行綜合評估。本文將為您詳細解讀讀器選型
    的頭像 發(fā)表于 06-24 14:19 ?380次閱讀
    固定讀<b class='flag-5'>碼</b>器怎么選型 工業(yè)二維<b class='flag-5'>碼</b>讀<b class='flag-5'>碼</b>器推薦

    模塊 DPM工業(yè)掃

    模組
    深圳市遠景達物聯(lián)網(wǎng)技術有限公司
    發(fā)布于 :2024年04月23日 16:23:25

    STM32 QSPI怎么退出映射模式?

    FLASH 中,多 QSPI 進行ERASE 和 PROGRAMME, 這個時候我就需要退出映射模式,請問怎么退出映射模式
    發(fā)表于 03-29 08:15

    STM32調(diào)試進入低功耗而沒有退出如何解決?

    STM32調(diào)試遇到如圖問題,大意是進入低功耗而沒有退出,請教大神們如何解決?
    發(fā)表于 03-22 07:52

    ARM平臺實現(xiàn)Docker容器技術

    什么是Docker? (1)Docker的架構 Docker是一個開源的應用容器引擎,讓開發(fā)者可打包他們的應用以及依賴包到一個可移植的鏡像中,然后發(fā)布到任何流行的Linux或Windo
    的頭像 發(fā)表于 03-07 13:48 ?811次閱讀
    ARM平臺實現(xiàn)<b class='flag-5'>Docker</b><b class='flag-5'>容器</b>技術

    sim卡pin怎么設置 pin和puk有什么區(qū)別

    可以設置一個PIN以及一個PUK。PIN是個人識別(Personal Identification Number),PUK是個人解
    的頭像 發(fā)表于 02-19 16:20 ?4674次閱讀

    基于相機技術的工業(yè)級多器——DC200讀

    作為一款基于相機技術的工業(yè)級多器,IDC200讀器可以識別各種傳統(tǒng)的一維和二維,包括各種材料上的印刷條碼、點針打標
    的頭像 發(fā)表于 01-26 14:34 ?967次閱讀
    基于相機技術的工業(yè)級多<b class='flag-5'>碼</b>讀<b class='flag-5'>碼</b>器——DC200讀<b class='flag-5'>碼</b>器

    電腦的pin是什么?PIN和密碼有什么區(qū)別?電腦如何設置pin?

    電腦的pin是什么?PIN和密碼有什么區(qū)別?電腦如何設置pin? 電腦的PIN是個人識別號碼的簡稱,是一種用于驗證身份或訪問控制的數(shù)字碼。PIN
    的頭像 發(fā)表于 01-17 11:17 ?3.1w次閱讀

    黑底白識別,性價比最高的讀神器

    ,淺色模塊一般選用白色、淺黃、米色等。是因為在傳統(tǒng)讀器的技術以及性能的限制下,一般多采用黑色二維和白色背景組合,更換顏色組合可能會導致二維無法讀取或者對于讀取
    的頭像 發(fā)表于 01-16 08:24 ?620次閱讀
    黑底白<b class='flag-5'>碼</b>識別,性價比最高的讀<b class='flag-5'>碼</b>神器