(19)国家知识产权局
(12)发明 专利申请
(10)申请公布号
(43)申请公布日
(21)申请 号 202210789815.7
(22)申请日 2022.07.06
(71)申请人 启明信息技 术股份有限公司
地址 130117 吉林省长 春市长春净月高新
技术产业开发区百合 街1009号
(72)发明人 牛建平 谢斌 王超
(74)专利代理 机构 成都金英专利代理事务所
(普通合伙) 51218
专利代理师 詹权松
(51)Int.Cl.
G06F 9/455(2006.01)
G06F 9/50(2006.01)
(54)发明名称
一种规避容器中僵尸进程的方法
(57)摘要
本发明公开了一种规避容器中僵尸进程的
方法, 所述方法包括使用流水线构建image容器
镜像和容器镜像编译; 所述image容器镜像构建,
包括Base基础镜像子步骤、 业务基础镜像构建子
步骤和业务应用镜像ENDPONITS子步骤; 所述容
器镜像编译, 包括编译基础镜像子步骤和设置编
译环境变量子步骤; 本发明利用Linux进程管理
机制, 使用dumb ‑init的方式解决了容器在运行
过程中, 销毁等情况下出现宿主主机很多僵尸进
程问题, 从而 导致资源浪费, 尤其PID进 程号的耗
尽。 同时采用Dockerfile多 阶构建, 有效缩减业
务容器镜像大小, 更加充分利用计算资源用于业
务应用。
权利要求书1页 说明书3页 附图1页
CN 115269114 A
2022.11.01
CN 115269114 A
1.一种规避容器中僵尸进程的方法, 包括以下步骤:
使用流水线构建ima ge容器镜像;
容器镜像编译;
镜像的ENTRYPOINT启动参数设置, 使进程启动顺序为首先启动dumb ‑init进行作为系
统PID为0的父进程, 后续业务应用进程直接被dumb ‑init守护进程接管, 业务子进程的销毁
和新建都由父进程统一处 理, 以彻底预防容器化应用出现僵尸进程。
2.根据权利要求1所述的一种规避容器中僵尸进程的方法, 其特征在于, 所述image容
器镜像构建,包括以下子步骤:
Base基础镜像: Base基础镜像中存放dump ‑init进程控制二进制程序,该程序主要充当
Linux操作系统中的supervi sor和init system并且运行时以PID1在容器中运行, 业务容器
所有进程均有该进程控制;
业务基础镜像构 建: 在第二阶构 建业务image镜像时, 从第一阶段base基础镜像中复制
dump‑init二进制执行文件, 并存放在当前业务基础镜像的寄存目录下, 并进行可执行授
权;
业务应用镜像ENDPONITS: 在业务镜像的Dockerfile中, 业务容器的启动ENDPONITS基
于语法规则添加dump ‑init启动参数。
3.根据权利要求1所述的一种规避容器中僵尸进程的方法, 其特征在于, 所述容器镜像
编译, 包括以下子步骤:
编译基础镜像, 将代码从代码仓库下 载, 并下载相关依赖库文件安装;
设置编译环境变量, 使得在编译之后的制品中注入有效环境信息, 用于后期该镜像容
器化启动需要和安全类加固。
4.根据权利要求1所述的一种规避容器中僵尸进程的方法, 其特征在于, 所述
ENTRYPOI NT启动参数设置的命令式为:
ENTRYPOI NT ["/usr/bi n/dumb‑init", "", "/main"]。
5.根据权利要求1所述的一种规避容器中僵尸进程的方法, 其特征在于, 所述业务基础
镜像的寄存目录具体是/usr/l ocal/bin。
6.根据权利要求2所述的一种规避容器中僵尸进程的方法, 其特征在于, 所述的语法规
则包括JSON语法。权 利 要 求 书 1/1 页
2
CN 115269114 A
2一种规避容器中僵尸进程的方 法
技术领域
[0001]本发明涉及软件运维技 术领域, 具体涉及一种规避容器中僵尸进程的方法。
背景技术
[0002]容器是通过一种虚拟化技术来隔离运行在主机上不 同进程, 从而达到进程之间、
进程和宿主操作系统相互隔离、 互不影响的技术。 容器化后, 由于单容器单进程, 已经没有
传统意义上的 init 进程了。 应用进程直接占用了 pid 1 的进程号。 从而导致以下两个问
题:
A: 常见的使用是 docker run my‑container script 。 给 docker run进程发送
SIGTERM 信号会杀掉 docker run 进程, 但是容器还在后台运行。
[0003]B: 如果父进程在子进程之前退出, 子进程会变成孤儿进程, 它的父进程会变成
PID 1。 因此, init进程就要对这些进程负责, 并在适当的时候调用 wait() 方法。 通常情
况下, 大部 分应用进程不会处理偶然依附在自己进程上的随机子进程, 所以在容器中, 会出
现许多僵尸进程。
发明内容
[0004]本发明解决的技术问题是: 克服了使用dumb ‑init的方式解决了容器在运行过程
中, 销毁等情况下出现宿主主机很多僵尸进程问题的缺点, 提供了一种规避容器中僵尸进
程运维问题的方法及系统。
[0005]本发明的目的是通过以下技 术方案来实现的:
一种规避容器中僵尸进程的方法, 包括以下步骤:
使用流水线构建ima ge容器镜像;
容器镜像编译;
镜像的ENTRYPOINT启动参数设置, 使进程启动顺序为首先启动dumb ‑init进行作
为系统PID为0的父进程, 后续业务应用进程直接被dumb ‑init守护进程接管, 业务子进程的
销毁和新建都由父进程统一处 理, 以彻底预防容器化应用出现僵尸进程。
[0006]具体的, 所述 image容器镜像构建,包括以下子步骤:
Base基础镜像: Base基础镜像中存放dump ‑init进程控制二进制程序,该程序 主要
充当Linux操作系统中的supervi sor和init system并且运行时以PID1在容器中运行, 业务
容器所有 进程均有该进程控制;
业务基础 镜像构建: 在第二阶构建业务im age镜像时, 从第一阶段base基础 镜像中
复制dump ‑init二进制执行文件, 并存放在当前业务基础镜像的寄存目录下, 并进 行可执行
授权;
业务应用镜像ENDPONITS: 在业务镜像的Dockerfile中, 业务容器的启动
ENDPONITS基于语法规则添加dump ‑init启动参数。
[0007]具体的, 所述 容器镜像编译, 包括以下子步骤:说 明 书 1/3 页
3
CN 115269114 A
3
专利 一种规避容器中僵尸进程的方法
文档预览
中文文档
6 页
50 下载
1000 浏览
0 评论
309 收藏
3.0分
温馨提示:本文档共6页,可预览 3 页,如浏览全部内容或当前文档出现乱码,可开通会员下载原始文档
本文档由 人生无常 于 2024-03-18 13:29:27上传分享