Dockerfile 中 CMD/ENTRYPOINT 的 shell 形式与 exec 形式对信号处理有何影响?
围绕“Dockerfile 中 CMD/ENTRYPOINT 的 shell 形式与 exec 形式对信号处理有何影响”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 shell 形式多出的 /bin/sh 父进程导致信号无法直达应用的问题。
Docker · 并发编程面试题第 1 页,显示第 1–10 题,共找到 10 道完整解析,可继续按分类、标签与关键词缩小范围。
按稳定语义路径排序
围绕“Dockerfile 中 CMD/ENTRYPOINT 的 shell 形式与 exec 形式对信号处理有何影响”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 shell 形式多出的 /bin/sh 父进程导致信号无法直达应用的问题。
本题解释Docker -m/--memory限制触发cgroup OOM killer的机制,说明主进程被杀时的表现(SIGKILL、退出码137),并给出通过docker inspect和dmesg验证的具体方法,同时区分容器存活与主进程被杀的情况。
围绕“Docker 的 --init 选项解决了 PID 1 不回收僵尸子进程的问题,其原理是什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 tini 作为 PID 1 转发信号并回收孤儿进程的机制。
本题解释Docker容器内主进程PID为1的成因,即PID命名空间隔离。重点分析PID1在信号处理和僵尸进程回收上的特殊性,对比容器默认缺少init系统带来的问题,并提供判断和应对方法。
围绕“Docker 的 --pids-limit 如何防御 fork 炸弹,默认值是多少”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明限制容器内 PID 总数的机制与内核默认行为。
本文解释 Docker 共享宿主机 PID 和 IPC 命名空间的典型场景:调试与 System V IPC 通信,以及隔离性损失的具体表现。给出判断准则:仅在单机调试或信任容器的场合使用,生产环境慎用,因为容器内可操纵宿主进程和 IPC 对象。
围绕“为什么用 shell 形式(exec sh -c)作为容器入口会导致主进程收不到 SIGTERM”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 shell 成为 PID 1 后信号不转发给子进程及 exec 形式/显式 exec 的解法。
围绕“直接用 docker kill 或超时被 SIGKILL 对容器内应用有什么数据风险,如何设计规避”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明进程无机会 flush/关闭事务的风险与优雅停机设计要点。
围绕“在容器入口脚本中如何保证把收到的 SIGTERM 正确转发给实际业务进程”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 exec 替换进程或 trap+wait 的两种正确写法及常见错误。
围绕“为什么挂载宿主机目录进 Docker 容器后经常出现权限拒绝,如何正确处理 UID 映射”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明容器进程 UID 与宿主机文件属主的对应关系及 chown/指定 --user 等解法。