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

如何查询占用指定GPU的Docker镜像(含闲置内存占用场景)

解决Docker容器GPU内存占用定位问题

首先明确:静态的Docker镜像不会占用GPU资源,实际占用GPU的是运行中的容器(或容器退出后残留的进程)。以下是几种定位GPU占用关联容器的方法:

1. 基础GPU占用与PID关联

先通过nvidia-smi查看GPU的占用情况,获取占用GPU的进程PID:

nvidia-smi

输出中会列出每个占用GPU的进程PID、GPU编号等核心信息。

2. 将PID映射到Docker容器

拿到PID后,用以下命令找到该PID所属的容器:

  • 方法一:遍历所有容器匹配PID
docker inspect --format '{{.Name}} (PID: {{.State.Pid}})' $(docker ps -q) | grep <目标PID>
  • 方法二:直接过滤容器PID
docker ps --filter "pid=<目标PID>" --format "table {{.Names}}\t{{.Image}}\t{{.Pid}}"

如果容器已停止但仍有残留进程,可加上-a参数查看所有容器:

docker ps -a --filter "pid=<目标PID>" --format "table {{.Names}}\t{{.Image}}\t{{.Pid}}"

3. 直接查看容器的GPU使用情况

使用Docker的GPU统计功能(需Docker支持GPU管理),查看所有容器的GPU占用:

docker stats --format "table {{.Name}}\t{{.Image}}\t{{.GPUUsage}}\t{{.GPUMemUsage}}" --no-stream

该命令会直接展示每个容器的GPU使用率、内存占用,以及对应的镜像名称。

4. 确认特定镜像x是否占用GPU2

方法一:先找镜像x的所有容器,再检查GPU使用

  1. 列出所有基于镜像x的容器ID:
docker ps -q --filter "ancestor=x"
  1. 对每个容器ID,检查其绑定的GPU设备:
docker inspect <容器ID> --format '{{.Name}}: {{.HostConfig.DeviceRequests}}'

或者直接查看容器内的GPU使用:

docker exec <容器ID> nvidia-smi

方法二:从GPU2的进程反向关联镜像

  1. 获取GPU2的所有占用PID:
nvidia-smi --query-compute-apps=pid,gpu_uuid --format=csv | grep <GPU2的UUID或编号>
  1. 对每个PID,用前面的方法找到所属容器,再检查容器的镜像是否为x:
docker inspect <容器ID> --format '{{.Name}}: {{.Config.Image}}'

5. 清理残留GPU占用

如果容器已停止但GPU内存仍被占用,大概率是残留的僵尸进程,直接杀掉对应PID即可:

kill -9 <目标PID>

若问题仍存在,可重启Docker服务彻底清理:

systemctl restart docker

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 15:54:36