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

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

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

最常見的退出碼介紹

馬哥Linux運(yùn)維 ? 來源:馬哥Linux運(yùn)維 ? 作者:馬哥Linux運(yùn)維 ? 2022-08-02 09:57 ? 次閱讀

為什么我的容器沒有運(yùn)行?

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

這些退出碼是什么意思?

導(dǎo)致該退出碼的動作是什么?

exit code:代表一個進(jìn)程的返回碼,通過系統(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表示特定容器沒有附加前臺進(jìn)程。

該退出代碼是所有其他后續(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”,也可以很復(fù)雜,比如空引用或者其他程序 crash

Exit Code 137

表明容器收到了 SIGKILL 信號,進(jìn)程被殺掉,對應(yīng) kill -9

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

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

Exit Code 139

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

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

Exit Code 143

表明容器收到了 SIGTERM 信號,終端關(guān)閉,對應(yīng) kill -15

一般對應(yīng) docker stop 命令

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

不常用的一些 Exit Code

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

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

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

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

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

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

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

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

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

    關(guān)注

    117

    文章

    3791

    瀏覽量

    81156
  • 容器
    +關(guān)注

    關(guān)注

    0

    文章

    496

    瀏覽量

    22074
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4801

    瀏覽量

    68733

原文標(biāo)題:理解 Docker 容器退出碼

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    生產(chǎn)線用條碼讀介紹

    工業(yè)讀器是一種專門用于讀取各種條碼信息的工業(yè)設(shè)備。在工業(yè)應(yīng)用中,讀器經(jīng)常用于自動識別產(chǎn)品、包裝和配件上的編碼信息,以支持物料管理、生產(chǎn)計劃、物流和配送的自動化。常見的工業(yè)條碼閱讀器包括激光讀
    的頭像 發(fā)表于 08-29 15:50 ?232次閱讀
    生產(chǎn)線用條碼讀<b class='flag-5'>碼</b>器<b class='flag-5'>介紹</b>

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

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

    功能測試覆蓋中最常見的是什么方法

    功能測試覆蓋是軟件測試過程中的一個重要環(huán)節(jié),它主要關(guān)注軟件產(chǎn)品的功能實現(xiàn)是否符合需求規(guī)格說明。在功能測試覆蓋中,有多種方法可以采用,以確保測試的全面性和有效性。本文將詳細(xì)介紹功能測試覆蓋中最常見
    的頭像 發(fā)表于 05-30 14:55 ?750次閱讀

    常見的光纖接口介紹

    在現(xiàn)代通信和網(wǎng)絡(luò)技術(shù)中,光纖接口扮演著至關(guān)重要的角色。它們不僅是連接光纖線纜和設(shè)備的橋梁,還承載著高速、大容量數(shù)據(jù)傳輸?shù)闹匾蝿?wù)。本文將詳細(xì)介紹幾種常見的光纖接口類型,包括它們的特點、應(yīng)用場景、技術(shù)規(guī)格等方面的內(nèi)容。
    的頭像 發(fā)表于 05-29 16:08 ?2094次閱讀

    PCB板的顏色應(yīng)該怎么選?為什么綠色最常見?

    使用的,更為人熟悉。但是不同的PCB我們應(yīng)該怎么去選擇PCB的顏色呢,為什么綠色更常用呢?1綠色PCB板綠色是最常見的PCB顏色,也是最經(jīng)濟(jì)、使用最廣泛的選擇。這是因為在傳
    的頭像 發(fā)表于 05-10 08:20 ?999次閱讀
    PCB板的顏色應(yīng)該怎么選?為什么綠色<b class='flag-5'>最常見</b>?

    二維模塊嵌入到電梯設(shè)備里

    二維模塊在電梯設(shè)備中的應(yīng)用1.二維模塊的基本介紹二維
    的頭像 發(fā)表于 05-08 10:40 ?369次閱讀
    二維<b class='flag-5'>碼</b>掃<b class='flag-5'>碼</b>模塊嵌入到電梯設(shè)備里

    Ubuntu系統(tǒng)常見問題及解答

    今天小編為大家總結(jié)了Ubuntu系統(tǒng)常見問題的解決方法,便于收藏和查閱,大家快快住哦~
    的頭像 發(fā)表于 04-19 12:29 ?1269次閱讀
    Ubuntu系統(tǒng)<b class='flag-5'>常見</b>問題及解答

    電子束光刻的參數(shù)優(yōu)化及常見問題介紹

    本文從光刻圖案設(shè)計、特征尺寸、電鏡參數(shù)優(yōu)化等方面介紹電子束光刻的參數(shù)優(yōu)化,最后介紹了一些常見問題。
    的頭像 發(fā)表于 03-17 14:33 ?1125次閱讀
    電子束光刻的參數(shù)優(yōu)化及<b class='flag-5'>常見</b>問題<b class='flag-5'>介紹</b>

    工業(yè)制造行業(yè)中的DPM識讀要如何選擇固定讀器?

    在工業(yè)制造行業(yè)中,DPM是一種常見的標(biāo)識方式,它是將信息直接標(biāo)記在產(chǎn)品表面上,以便在生產(chǎn)過程中進(jìn)行追蹤和識別。不言而喻,在如今的產(chǎn)品質(zhì)量追溯管理應(yīng)用上,需要對多種復(fù)雜條碼進(jìn)行識別讀取,其中就包括了
    的頭像 發(fā)表于 03-06 13:52 ?665次閱讀
    工業(yè)制造行業(yè)中的DPM<b class='flag-5'>碼</b>識讀要如何選擇固定讀<b class='flag-5'>碼</b>器?

    最常見的發(fā)動機(jī)怠速抖動問題及原因

    最常見的發(fā)動機(jī)怠速抖動問題及原因 發(fā)動機(jī)怠速抖動問題是一種常見的車輛故障,它通常會導(dǎo)致發(fā)動機(jī)運(yùn)行不穩(wěn)定,并伴有抖動感。這種問題可能由多種原因引起,本文將詳細(xì)介紹最常見的原因及解決辦法。
    的頭像 發(fā)表于 02-02 10:40 ?3082次閱讀

    modbus協(xié)議功能分類 modbus協(xié)議功能是什么,有什么作用

    Modbus協(xié)議是一種用于工業(yè)領(lǐng)域常見的通信協(xié)議,它基于主從結(jié)構(gòu),用于在不同設(shè)備之間實現(xiàn)數(shù)據(jù)交換。Modbus協(xié)議的功能是決定數(shù)據(jù)交換類型和操作的重要部分。下面將詳細(xì)介紹Modbus協(xié)議功能
    的頭像 發(fā)表于 01-31 14:47 ?7323次閱讀

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

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

    器種類有多少種類型

    器是一種廣泛應(yīng)用于數(shù)字電子電路中的設(shè)備,用于將一種制轉(zhuǎn)換為另一種制。根據(jù)不同的轉(zhuǎn)換方式和應(yīng)用場景,變器可以分為多種不同類型。下面將詳細(xì)介紹
    的頭像 發(fā)表于 01-19 14:13 ?696次閱讀

    最常見的直流負(fù)載工作方式

    最常見的直流負(fù)載工作方式? 直流負(fù)載工作方式是指在直流電路中使用的各種負(fù)載方式。直流負(fù)載是用于測試和測量直流電源輸出能力和能效的設(shè)備,可以模擬真實負(fù)載條件下的電流和功率需求。本文將詳細(xì)介紹最常見
    的頭像 發(fā)表于 01-18 15:12 ?796次閱讀

    GD32 485發(fā)送異常最常見原因

    相信有小伙伴們遇到過這樣的問題,在使用GD32進(jìn)行串口485發(fā)送的時候,明明發(fā)送了特定長度的數(shù)據(jù),但從機(jī)就是不響應(yīng),現(xiàn)在就讓我們來解析下最常見的一個原因。
    的頭像 發(fā)表于 01-16 09:39 ?1273次閱讀
    GD32 485發(fā)送異常<b class='flag-5'>最常見</b>原因