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

    文章

    515

    浏览量

    13057
  • docker容器
    +关注

    关注

    0

    文章

    31

    浏览量

    3507
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    GM861条二维识别模块用户手册

    GM861条二维识别模块用户手册
    发表于 07-09 14:56 ?0次下载

    干货分享 | RK3588 Ubuntu系统Docker容器使用指南

    前言:在瑞芯微RK3588高性能AIoT平台上运行Ubuntu系统时,Docker容器技术能极大提升开发部署效率。通过轻量级虚拟化实现环境隔离与快速迁移,本文将从零开始详解RK3588平台
    的头像 发表于 06-27 12:01 ?1340次阅读
    干货分享 | RK3588 Ubuntu系统<b class='flag-5'>Docker</b><b class='flag-5'>容器</b>使用指南

    支持二次开发的工业级二维读头选购指南

    在快节奏的工业环境中,如何让二维识别速度提升200%?面对复杂多变的扫需求,普通扫设备往往力不从心,而支持二次开发的工业级扫读头正成为企业降本增效的秘密武器。本文将为您揭开选购
    的头像 发表于 06-11 16:05 ?241次阅读
    支持二次开发的工业级二维<b class='flag-5'>码</b>扫<b class='flag-5'>码</b>读头选购指南

    HarmonyOS5云服务技术分享--退出登录文档问题

    \'; // 点击退出按钮时调用 auth.signOut() .then(() => { console.log(\"拜拜了您嘞~已清空本地缓存\"); // 这里可以跳转
    发表于 05-22 17:01

    为什么说二维模块是智能终端的“眼睛”?

    系统到物流的包裹追踪,这些看似简单的扫动作背后,都离不开这个微型"视觉系统"的高效运作。在物联网技术飞速发展的今天,二维模块已成为连接物理世界与数字世界的桥梁。它通过CMOS影
    的头像 发表于 05-21 14:39 ?359次阅读
    为什么说二维<b class='flag-5'>码</b>扫<b class='flag-5'>码</b>模块是智能终端的“眼睛”?

    产线效率翻倍!二维器这样用就对了

    。如果产线环境复杂,如存在粉尘、油污等,那么具有高防护等级(如IP67)的工业级扫器是首选,其能在恶劣环境中稳定工作,减少因设备故障导致的产线停滞。若产线对扫描速
    的头像 发表于 04-18 14:05 ?322次阅读
    产线效率翻倍!二维<b class='flag-5'>码</b>扫<b class='flag-5'>码</b>器这样用就对了

    远距版嵌入式扫机在户外扫收费场景中的应用解析

    随着移动支付的普及与发展,户外扫收费已经成为众多消费场景中的主流支付方式。无论是停车场收费、景区门票售卖,还是路边摊贩的快速交易,扫支付都以其便捷性赢得了广大用户的青睐。在这一背景下,远距
    的头像 发表于 03-17 16:08 ?347次阅读
    远距版嵌入式扫<b class='flag-5'>码</b>机在户外扫<b class='flag-5'>码</b>收费场景中的应用解析

    一“”当先!看二维模组如何重塑智能门锁扫体验

    在科技日新月异的今天,智能门锁正逐步取代传统机械锁,成为现代家庭安全防护的首选。在这场门锁智能化革命中,二维模组以其独特的识别技术和便捷的操作方式,成为智能门锁的重要组成部分。本文将深入探讨二维
    的头像 发表于 03-12 16:17 ?494次阅读
    一“<b class='flag-5'>码</b>”当先!看二维<b class='flag-5'>码</b>模组如何重塑智能门锁扫<b class='flag-5'>码</b>体验

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

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

    工业二维器在电子制造业中的应用

    工业二维器在电子制造业中的应用主要体现在以下几个方面:▲生产追溯管理工业二维器通过对电子产品上的二维进行快速扫描,实现了高效、
    的头像 发表于 11-13 16:19 ?603次阅读
    工业二维<b class='flag-5'>码</b>读<b class='flag-5'>码</b>器在电子制造业中的应用

    ASCII在编程中的应用实例

    ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)在编程中有着广泛的应用。以下是一些ASCII在编程中
    的头像 发表于 11-10 09:43 ?1615次阅读

    如何使用ASCII进行编码

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

    什么是工业用扫设备,工业扫器有什么优势

    工业用扫设备概述工业用扫设备,通常指的是工业扫器,是一种高性能的一维条码和二维条码扫描设备,广泛应用于工业生产、仓储等场景中。相较于普通的消费级扫设备,工业扫
    的头像 发表于 11-07 14:44 ?731次阅读
    什么是工业用扫<b class='flag-5'>码</b>设备,工业扫<b class='flag-5'>码</b>器有什么优势

    无线智能遥控开关怎么对

    无线智能遥控开关是一种通过无线信号控制家用电器的设备,它提供了一种方便、快捷的控制方式,使得用户可以远程控制家中的灯光、电器等设备。对是无线智能遥控开关使用过程中的一个重要步骤,它涉及到遥控器
    的头像 发表于 10-12 18:12 ?5653次阅读

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

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