You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

bash -c与Dockerfile RUN的$PPID行为差异技术排查

关于bash -c与Dockerfile RUN指令中$PPID行为的测试分析

主机环境测试

  • 执行test.sh脚本时,bash -c 'sh echo-ppid.sh'执行环境的$PPID与sh test.sh的$PPID完全一致
  • sh -c场景下的$PPID表现符合常规预期

Docker容器环境测试(基于nvcr.io/nvidia/pytorch:21.09-py3镜像)

  • 使用RUN ["sh", "test.sh"]指令时,输出结果中多数进程的$PPID为1,仅部分嵌套子进程的父PID显示正常
  • 测试单条RUN命令时出现异常:当前进程ID$$=1且父进程ID$PPID=0,直接导致ps -o comm $PPID命令执行失效

问题排查结论

  • 容器内/bin/sh符号链接指向/usr/bin/sh-wrap,而sh-wrap底层实际调用的是bash
  • 推测是sh-wrap采用的exec无fork优化机制,引发了上述$PPID异常问题

内容的提问来源于stack exchange,提问作者YouJiacheng

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 17:32:42