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

如何将Docker宿主机进程传入容器供ps/htop查看

容器内查看宿主机全量进程的实现方案

完全可以实现,核心逻辑很简单:Linux 下 ps、htop 等进程查看工具,本质都是通过读取 /proc 虚拟文件系统下的内核暴露数据生成进程列表,只要容器内能访问到宿主机的 /proc 目录,就能直接拿到宿主机所有进程信息,不需要额外做进程数据同步。

方案1:启动容器时直接共享宿主机PID命名空间(最推荐,零额外配置)

Docker 原生提供了 PID 命名空间共享参数,启动容器时加上 --pid=host 即可,容器会直接复用宿主机的 PID 命名空间,内部默认挂载的 /proc 就是宿主机的 /proc,进程工具不需要任何适配就能直接用。
示例启动命令:

docker run -it --pid=host your-image-name bash

进入容器后安装好 procps(提供ps命令)、htop 工具,直接执行 ps aux 或者 htop,输出的就是宿主机的全量进程列表。

方案2:针对已经运行的、无法重启的容器

已经启动的容器不能直接修改 PID 命名空间配置,可以在宿主机用root权限手动把宿主机的 /proc 目录挂载到容器内的独立路径,再让进程工具读取该路径下的 proc 数据即可:

  1. 先在宿主机上执行以下命令,把宿主机/proc绑定挂载到目标容器内的/host-proc目录,把命令里的YOUR_CONTAINER_NAME_OR_ID替换成你自己的容器名/ID:
    CONTAINER_PID=$(docker inspect -f '{{.State.Pid}}' YOUR_CONTAINER_NAME_OR_ID)
    nsenter -t $CONTAINER_PID -m mkdir -p /host-proc
    nsenter -t 1 -m -- mount --bind /proc /proc/$CONTAINER_PID/root/host-proc
    
  2. 进入容器后,指定 proc 路径调用进程查看工具即可:
    • 查看进程列表:ps --pid /host-proc aux
    • 打开htop:PROC_ROOT=/host-proc htop

注意事项

  • 上述操作会打破容器默认的进程隔离边界,开启后容器内的高权限进程不仅能查看宿主机进程,还能对宿主机进程发送信号、调试,存在明确的权限风险,禁止给不可信的业务容器开放该配置。
  • 运行中容器不要直接把宿主机/proc覆盖容器自身原有/proc挂载点,会导致容器内进程状态识别异常,挂载到独立子目录是更安全的做法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 03:45:47