0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Docker容器退出码是什么意思?导致该退出码的动作是什么

马哥Linux运维 来源:徐亚松(占洋) 作者:徐亚松(占洋) 2022-08-02 09:55 次阅读

为什么我的容器没有运行?

回答这个问题需要知道 Docker 容器为什么退出,退出码会提示容器停止运行的情况。本文列出了最常见的退出码,来回答两个重要问题:

这些退出码是什么意思?

导致该退出码的动作是什么?

exit code:代表一个进程的返回码,通过系统调用 exit_group 来触发。在 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表示特定容器没有附加前台进程。

该退出代码是所有其他后续退出代码的例外。

这不一定意味着发生了不好的事情。如果开发人员想要在容器完成其工作后自动停止其容器,则使用此退出代码。

如果你执行 docker run hello-world, 你会得到“Hello from docker!”,但查看容器的时候docker ps -a | grep hello-world,会发现状态码为 0

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

Exit Code 1

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

程序错误可以很简单,例如 “除以0”,也可以很复杂,比如空引用或者其他程序 crash

Exit Code 137

表明容器收到了 SIGKILL 信号,进程被杀掉,对应 kill -9

引发 SIGKILL 的是 Docker Kill。这可以由用户或由 Docker 守护程序来发起,手动执行:docker kill

137 比较常见,如果 pod 中的 limit 资源设置较小,会运行内存不足导致 OOMKilled,此时 state 中的 "OOMKilled" 值为 true,你可以在系统的 dmesg 中看到 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

Exit Code 126: 权限问题或命令不可执行

Exit Code 127: Shell 脚本中可能出现错字且字符无法识别的情况

Exit Code 1 或 255:因为很多程序员写异常退出时习惯用 exit(1) 或 exit(-1),-1 会根据转换规则转成 255。这个一般是自定义 code,要看具体逻辑。

退出状态码的区间

必须在 0-255 之间,0 表示正常退出

外界将程序中断退出,状态码在 129-255

程序自身异常退出,状态码一般在 1-128

假如写代码指定的退出状态码时不在 0-255 之间,例如: exit(-1),这时会自动做一个转换,最终呈现的状态码还是会在 0-255 之间。我们把状态码记为 code,当指定的退出时状态码为负数,那么转换公式如下:256 – (|code| % 256)



审核编辑:刘清


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Docker
    +关注

    关注

    0

    文章

    457

    浏览量

    11849
  • docker容器
    +关注

    关注

    0

    文章

    30

    浏览量

    3326
收藏 人收藏

    评论

    相关推荐

    设备能识别哪些类型的 工业二维扫描设备有什么推荐产品

    在当今智能制造与数字化转型的浪潮中,扫设备作为信息识别与采集的关键工具,其重要性日益凸显。从简单的条形码到复杂多变的二维,再到专为工业环境设计的工业二维,扫威廉希尔官方网站 的应用范围不断拓
    的头像 发表于 12-18 15:13 92次阅读
    扫<b class='flag-5'>码</b>设备能识别哪些类型的<b class='flag-5'>码</b> 工业二维<b class='flag-5'>码</b>扫描设备有什么推荐产品

    如何使用ASCII进行编码

    ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是一种字符编码标准,用于文本电子交换。它主要包括128个字符
    的头像 发表于 11-10 09:37 542次阅读

    容器在运行中电压超过额定电压需要退出运行吗

    当电容器运行中的电压超过额定电压时,通常需要采取措施。如果电压超出额定电压的幅度较大且持续时间较长,建议将电容器 退出运行 ,以避免损坏设备。以下是一些考虑因素: 电容器的过电压耐受能
    的头像 发表于 09-19 14:44 1216次阅读
    电<b class='flag-5'>容器</b>在运行中电压超过额定电压需要<b class='flag-5'>退出</b>运行吗

    新大陆扫器哪款能够识别DPM?新大陆二维器介绍

    随着工业自动化的不断发展,二维和数据矩阵(DPM)在生产、物流和仓储等领域的应用越来越广泛。DPM因其高密度和小体积的特点,常常被应用于金属、塑料等各种材料的直接标记。这就对扫
    的头像 发表于 07-29 14:36 365次阅读
    新大陆扫<b class='flag-5'>码</b>器哪款能够识别DPM<b class='flag-5'>码</b>?新大陆二维<b class='flag-5'>码</b>扫<b class='flag-5'>码</b>器介绍

    ARM平台实现Docker容器威廉希尔官方网站

    restart 图24 (2)创建并启动容器。由于Docker使用VFS存储驱动程序,当创建容器时,需要先创建容器层,
    发表于 07-25 14:36

    ARM平台实现Docker容器威廉希尔官方网站

    创建容器层,容器层需要对上一层进行“深拷贝”,因此完成创建并启动容器整个过程需要耗时约1min,请耐心等待。 Target#docker
    发表于 07-17 11:05

    固定读器怎么选型 工业二维器推荐

    器选型是一项重要的决策过程,涉及到多个因素的考虑。在选择读器时,我们需要根据实际应用环境、使用方式、预算、需求以及与其他设备或系统的兼容性等方面进行综合评估。本文将为您详细解读读器选型
    的头像 发表于 06-24 14:19 360次阅读
    固定读<b class='flag-5'>码</b>器怎么选型 工业二维<b class='flag-5'>码</b>读<b class='flag-5'>码</b>器推荐

    模块 DPM工业扫

    模组
    深圳市远景达物联网威廉希尔官方网站 有限公司
    发布于 :2024年04月23日 16:23:25

    STM32 QSPI怎么退出映射模式?

    FLASH 中,多 QSPI 进行ERASE 和 PROGRAMME, 这个时候我就需要退出映射模式,请问怎么退出映射模式
    发表于 03-29 08:15

    STM32调试进入低功耗而没有退出如何解决?

    STM32调试遇到如图问题,大意是进入低功耗而没有退出,请教大神们如何解决?
    发表于 03-22 07:52

    ARM平台实现Docker容器威廉希尔官方网站

    什么是Docker? (1)Docker的架构 Docker是一个开源的应用容器引擎,让开发者可打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windo
    的头像 发表于 03-07 13:48 801次阅读
    ARM平台实现<b class='flag-5'>Docker</b><b class='flag-5'>容器</b>威廉希尔官方网站

    sim卡pin怎么设置 pin和puk有什么区别

    可以设置一个PIN以及一个PUK。PIN是个人识别(Personal Identification Number),PUK是个人解
    的头像 发表于 02-19 16:20 4617次阅读

    基于相机威廉希尔官方网站 的工业级多器——DC200读

    作为一款基于相机威廉希尔官方网站 的工业级多器,IDC200读器可以识别各种传统的一维和二维,包括各种材料上的印刷条码、点针打标
    的头像 发表于 01-26 14:34 954次阅读
    基于相机威廉希尔官方网站
的工业级多<b class='flag-5'>码</b>读<b class='flag-5'>码</b>器——DC200读<b class='flag-5'>码</b>器

    电脑的pin是什么?PIN和密码有什么区别?电脑如何设置pin

    电脑的pin是什么?PIN和密码有什么区别?电脑如何设置pin? 电脑的PIN是个人识别号码的简称,是一种用于验证身份或访问控制的数字码。PIN
    的头像 发表于 01-17 11:17 3.1w次阅读

    黑底白识别,性价比最高的读神器

    ,浅色模块一般选用白色、浅黄、米色等。是因为在传统读器的威廉希尔官方网站 以及性能的限制下,一般多采用黑色二维和白色背景组合,更换颜色组合可能会导致二维无法读取或者对于读取
    的头像 发表于 01-16 08:24 610次阅读
    黑底白<b class='flag-5'>码</b>识别,性价比最高的读<b class='flag-5'>码</b>神器