当我们将停止发送到 pid 1 时,docker 如何处理子进程

Avinash Reddy Penugonda

我目前在 Dockerfile 中使用 ENTRYPOINT ["/sbs/start.sh"]。因此,当容器启动时,start.sh 作为 pid 1 运行,而我的 start.sh 脚本将另外两个子进程跨越到 pid1。我的问题是当我向 pid1 发送 docker stop 命令时,docker 将如何处理子进程?子进程会被优雅地停止吗?还是会被强行杀死?

在这些我们有子进程的情况下,是否最好有一个简单的进程主管和初始化系统(https://github.com/Yelp/dumb-init或 supervisor)来解决这些问题?如果是这样,请建议一个轻量级的初始化系统?或者pid1(在我的例子中是start.sh)可以解决这些问题吗?

ps -ef 的输出:

root         1     0  0 19:23 ?        00:00:00 /bin/bash /sbs/start.sh

root        13     1  0 19:23 ?        00:00:00 /sbs/bin/envconsul... 

root        20    13  1 19:23 ?        00:00:21 /usr/lib/...

任何帮助表示赞赏。

丹·洛

Docker 不会在这里做任何事情。它只是向 PID 1 发出信号。如果 PID 1 有子进程,它应该处理向它们发出信号。这是标准的 Unix 模型。

有关更多信息,您可以阅读Docker 和 PID 1 Zombie Reaping Problem

当 PID 1 退出时,容器将退出,因此孩子们不一定会优雅地退出。如果你想让他们优雅地退出,你就必须有一些知道如何做到这一点的东西。

上面的链接提供了一个解决方案,一个来自 Phusion 的图像,它有一个 init-style PID 1 来处理这样的事情。还有其他解决方案;这只是一种选择。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用pid 1和pid not 1将systemd作为进程运行?

来自分类Dev

为什么我的自定义信号处理程序会在比较 pid 时使子进程获得 SIGTTIN

来自分类Dev

在Docker容器中时,Systemd没有获得pid 1

来自分类Dev

我们如何使用curl将GET请求发送到外部API‽?

来自分类Dev

当我使用 latin-1 编码将 utf8 编码字符从 Pandas 发送到 mysql 时出现错误的编码字符

来自分类Dev

如何使子进程完成后立即返回以运行父进程(当我们执行fork时)?

来自分类Dev

从分叉进程通过管道发送封送数据时如何处理编码?

来自分类Dev

启动时将子进程的PID回显到文件-bash

来自分类Dev

如何从Android应用程序将Stripe令牌发送到我们的服务器?

来自分类Dev

我们如何使用LogDNA将IBM Cloud“ SDK for NodeJS”日志发送到Activity Tracker?

来自分类Dev

在将参数发送到@Query函数时,如果我给像?1,则试图像吗?只要

来自分类Dev

当ls / proc / $ pid / fd不是lsof -p $ pid时,如何停止?

来自分类Dev

在python中使用子进程时如何处理文件名中的空格

来自分类Dev

在python中使用子进程时如何处理文件名中的空格

来自分类Dev

waitpid返回pid = 0和WIFEXITED = 1如何获取pid?

来自分类Dev

waitpid返回pid = 0和WIFEXITED = 1如何获取pid?

来自分类Dev

如何杀死除PID 1之外的所有进程?

来自分类Dev

为什么我的子进程的PGID不是父进程的PID?

来自分类Dev

获取发送管道进程的PID

来自分类Dev

为什么将SIGINT发送到其父进程时不传播到其子进程?

来自分类Dev

当我们将 readonly 设置为 true 时如何自动更改 TcustomEdit 的字体颜色

来自分类Dev

对于以pid 1运行的docker应用程序,我必须采取哪些特殊预防措施?

来自分类Dev

超时子进程pid

来自分类Dev

当我们使用“ Mail :: Sendmail”模块发送邮件时,如何在邮件中设置“ Return-Path”?

来自分类Dev

如何处理网页/表单中的必填字段(当我们在填写表单时跳过任何必填字段时。)

来自分类Dev

我们如何使用意图将数据从第一活动发送到第二活动以及将第二活动发送到第一活动bu

来自分类Dev

当我们关闭开关时,我们如何取消选择该行

来自分类Dev

我如何找出以R中的system或system2开头的子进程的pid?

来自分类Dev

当我们在浏览器中输入url并按Enter时,rails在技术上如何处理请求

Related 相关文章

  1. 1

    如何使用pid 1和pid not 1将systemd作为进程运行?

  2. 2

    为什么我的自定义信号处理程序会在比较 pid 时使子进程获得 SIGTTIN

  3. 3

    在Docker容器中时,Systemd没有获得pid 1

  4. 4

    我们如何使用curl将GET请求发送到外部API‽?

  5. 5

    当我使用 latin-1 编码将 utf8 编码字符从 Pandas 发送到 mysql 时出现错误的编码字符

  6. 6

    如何使子进程完成后立即返回以运行父进程(当我们执行fork时)?

  7. 7

    从分叉进程通过管道发送封送数据时如何处理编码?

  8. 8

    启动时将子进程的PID回显到文件-bash

  9. 9

    如何从Android应用程序将Stripe令牌发送到我们的服务器?

  10. 10

    我们如何使用LogDNA将IBM Cloud“ SDK for NodeJS”日志发送到Activity Tracker?

  11. 11

    在将参数发送到@Query函数时,如果我给像?1,则试图像吗?只要

  12. 12

    当ls / proc / $ pid / fd不是lsof -p $ pid时,如何停止?

  13. 13

    在python中使用子进程时如何处理文件名中的空格

  14. 14

    在python中使用子进程时如何处理文件名中的空格

  15. 15

    waitpid返回pid = 0和WIFEXITED = 1如何获取pid?

  16. 16

    waitpid返回pid = 0和WIFEXITED = 1如何获取pid?

  17. 17

    如何杀死除PID 1之外的所有进程?

  18. 18

    为什么我的子进程的PGID不是父进程的PID?

  19. 19

    获取发送管道进程的PID

  20. 20

    为什么将SIGINT发送到其父进程时不传播到其子进程?

  21. 21

    当我们将 readonly 设置为 true 时如何自动更改 TcustomEdit 的字体颜色

  22. 22

    对于以pid 1运行的docker应用程序,我必须采取哪些特殊预防措施?

  23. 23

    超时子进程pid

  24. 24

    当我们使用“ Mail :: Sendmail”模块发送邮件时,如何在邮件中设置“ Return-Path”?

  25. 25

    如何处理网页/表单中的必填字段(当我们在填写表单时跳过任何必填字段时。)

  26. 26

    我们如何使用意图将数据从第一活动发送到第二活动以及将第二活动发送到第一活动bu

  27. 27

    当我们关闭开关时,我们如何取消选择该行

  28. 28

    我如何找出以R中的system或system2开头的子进程的pid?

  29. 29

    当我们在浏览器中输入url并按Enter时,rails在技术上如何处理请求

热门标签

归档