当前位置: 首页 > news >正文

关于使用/bin/sh -c 用于Dockerfile的Entrypoint的问题

问题描述

相同的dockerfile,使用不同的基础镜像制作镜像1号进程不相同
ENTRYPOINT都是: /bin/sh -c 'pre-start.sh && myblockserver '的形式
就是执行多个命令命令,最后的一个命令是阻塞的

镜像1:   1号进程是 /bin/sh -c pre-start.sh && myblockserver    【单引号被系统去掉了】sleep 99d 作为子进程运行可以总结为:-c 后边如果是使用&&连接的多个命令并且有阻塞的命令/bin/sh -c pre-start.sh && myblockserver 就不会退出
镜像2:  1号进程是就是myblockserver 可以总结为: -c &&连接的命令,如果只有最后一个命令是阻塞的,那么/bin/sh -c pre-start.sh && myblockserver  会退出问题: 如果myblockserver 没有处理回收子进程的的能力,容器里新的孤儿进程都会变成僵尸进程 例如 [sshd] <defunct>

问题分析: 两个基础镜像的bash的版本不同

镜像1: GNU bash, version 5.1.9 如果 &&连接的命名只有最后一个是阻塞的 /bin/sh -c 会退出镜像2: GUN bash,version 4.2.26  如果 &&连接的命名只有最后一个是阻塞的 /bin/sh -c 不会退出

规避方案

如果不想让/bin/sh -c 退出(bash可以回收僵尸进程):
判断bash版本(这个有点麻烦)或者: /bin/sh -c 'pre-start.sh && myblockserver && : '就是后边再加的命令啥都行,这里使用:,就是啥也不干的命令
http://www.lryc.cn/news/447752.html

相关文章:

  • JS---获取浏览器可视窗口的尺寸
  • 对抗攻击方法详解:梯度攻击、转移攻击与模型集成攻击
  • GPU并行效率问题——通过MPS提升GPU计算收益
  • patch 命令:补丁的应用
  • 仓颉编程语言4,遇到BUG求助
  • SpringIOCDI
  • 单细胞Seruat和h5ad数据格式互换(R与python)方法学习和整理
  • 分布式难题-三座大山NPC
  • 两个方法教你设置Excel密码,防止修改和复制Excel表格内容
  • Java解析Excel文件
  • Require:基于雪花算法完成一个局部随机,全局离散没有热点切唯一的数值Id生成器。
  • libevent - Macro function
  • 408算法题leetcode--第17天
  • 机器人顶刊IEEE T-RO发布无人机动态环境高效表征成果:基于粒子的动态环境连续占有地图
  • spring-boot web + vue
  • HDFS分布式文件系统01-HDFS架构与SHELL操作
  • Go语言流程控制
  • 无人机在救灾方面的应用!
  • 面试知识点总结篇一
  • 【计算机网络 - 基础问题】每日 3 题(二十五)
  • 【第十八章:Sentosa_DSML社区版-机器学习之协同过滤】
  • TDOA方法求二维坐标的MATLAB代码演示与讲解
  • 基于微信的原创音乐小程序的设计与实现+ssm论文源码调试讲解
  • 基于大数据技术的颈椎病预防交流与数据分析及可视化系统
  • Spring MVC中实现一个文件上传和下载功能
  • Webpack 介绍
  • 在Linux实时监控某个应用是否运行,未运行,执行运行命令
  • Serilog文档翻译系列(六) - 可用的接收器、增强器、格式化输出
  • 傅里叶级数在机器人中的应用(动力学参数辨识)
  • 前端框架Vue、React、Angular、Svelte对比