我不知道是否可以将其视为重复项,因为在特定情况下这是一个问题。
当前,我已经在docker映像之外创建了一个docker来处理我的Jenkins代理,该代理将执行自动重启,而无需使用超级用户作为解决方案(缺少python 3.7支持),并且由于那个原因,我正在使用{{1} }作为基本映像,我不想安装任何其他依赖项,因此我选择通过写来补偿openjdk:slim
和lsof
等工具的不足,以补充该工具是否可以检查进程是否在运行文件上的已启动进程pid,该文件将用于验证该进程在路径ps
下是否存在。当前,这是可行的,并且是创建用于处理代理程序自动启动的解决方案的主要原因。
但是我的问题是,这是最好的还是更合适的方法?
请在实现中找到以下代码:
/proc/pid/status
答案 0 :(得分:0)
如果容器中的主进程死亡,则应让容器随其死亡。
Docker及其上方的各个层具有重新启动整个容器的功能。基本Docker CLI有一个docker run --restart
选项,等效的Docker Compose选项是,Kubernetes Pod的默认行为是在经过一些补偿后重新启动即将死掉的容器。
因此,如果您只是让容器自行死亡,则将为容器引擎重新启动自身提供开箱即用的支持,而无需在映像中添加任何特殊支持;只需将CMD
设置为您实际需要容器执行的操作即可。这种方法的好处还在于,如果您检测到环境变得不稳定(“我依赖数据库并且无法访问”),则该过程可以选择中止自身,并在希望环境有所改善时让它重新启动。