Docker容器重启慢?快来看看这些优雅终止方案,吊打面试官系列

本文探讨了Docker容器重启慢的原因,主要是容器进程未收到SIGTERM信号。通过分析容器停止过程,指出没有init系统是问题的关键。提出使用exec模式的ENTRYPOINT指令作为解决方案,确保PID 1能够响应信号,从而实现容器的优雅终止。
摘要由CSDN通过智能技术生成
  • [全网独家首发!Docker顶级教程,简直把所有操作都给写出来了](

)

  • [这套Github上40K+star学习笔记,可以帮你搞定95%以上的Java面试](

)

作为一名系统重启工程师(SRE),你可能经常需要重启容器,毕竟 Kubernetes 的优势就是快速弹性伸缩和故障恢复,遇到问题先重启容器再说,几秒钟即可恢复,实在不行再重启系统,这就是系统重启工程师的杀手锏。然而现实并没有理论上那么美好,某些容器需要花费 10s 左右才能停止,这是为啥?有以下几种可能性:

  1. 容器中的进程没有收到SIGTERM信号。
  2. 容器中的进程收到了信号,但忽略了。
  3. 容器中应用的关闭时间确实就是这么长。

对于第 3 种可能性我们无能为力,本文主要解决 1 和 2。

如果要构建一个新的 Docker 镜像,肯定希望镜像越小越好,这样它的下载和启动速度都很快,一般我们都会选择一个瘦了身的操作系统(例如 AlpineBusybox 等)作为基础镜像。

问题就在这里,这些基础镜像的 init 系统也被抹掉了,这就是问题的根源!

init 系统有以下几个特点:

  • 它是系统的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值