首页/云/Docker 容器速查/inspect 核对容器资源限额
资源与安全50 条

inspect 核对容器资源限额

从 HostConfig 读取资源相关配置:内存、CPU、PID、设备与安全选项都在这里,审计与容差核对的第一手数据。

Docker 容器速查云更新于 2026-10-13

资源限额的权威来源

docker inspect 输出的 HostConfig 记录了容器实际生效的运行时配置:内存上限、CPU 配额与绑核、进程数限制、安全选项、只读根文件系统都在这里。它是审计与复盘的第一手数据——编排文件写的是什么、命令行传了什么参数,最终都以这里的取值和运行状态为准。核对限额、检查基线条目是否落地、判断故障时是否被资源限制拖累,都从这一块读。

基本信息

整体查看docker inspect --format {{json .HostConfig}} 容器
常用单项Memory / NanoCpus / CpusetCpus / PidsLimit / SecurityOpt
单位约定Memory 为字节,NanoCpus 为纳核(1500000000 即 1.5 核)
相关块State 看运行状态,Config 看镜像层配置

典型使用场景

  • 上线核对:确认新发布的服务真的带上了内存与 CPU 限制
  • 故障复盘:判断容器退出是否与配额、进程数限制有关
  • 安全基线检查:核对 no-new-privileges、只读根文件系统等条目是否落地
  • 跨环境比对:把测试与生产的 HostConfig 导出来对照差异
  • 容量评估:统计在跑容器的内存上限之和,判断节点是否超卖

读取与核对

读取与核对
# 先看关键几项,避免整段 JSON 太长
docker inspect -f 'mem={{.HostConfig.Memory}} nano_cpus={{.HostConfig.NanoCpus}} cpuset={{.HostConfig.CpusetCpus}} pids={{.HostConfig.PidsLimit}} readonly={{.HostConfig.ReadonlyRootfs}}' api

# 完整导出后再用工具格式化查看
docker inspect -f '{{json .HostConfig}}' api | python3 -m json.tool | head -40

# 安全选项单独确认
docker inspect -f '{{json .HostConfig.SecurityOpt}}' api

关键字段读法

字段含义正常/异常
Memory内存上限,单位字节0 表示未限制,生产服务应显式设置
NanoCpusCPU 上限,纳核表示0 表示未限制,易与邻居争抢
CpusetCpus绑定的 CPU 核列表为空即不绑定,跨 NUMA 时留意
PidsLimit进程与线程数上限0 或负数表示不限制,存在被拖垮风险
SecurityOpt安全选项数组缺少基线项说明加固没有落地
容器重建后这些取值回到编排文件或命令行的定义,历史核对结论要标注采集时间点,不能当作长期事实。
编排文件与命令行同时设置同一参数时,最终生效的是实际创建容器时使用的那一份,以 inspect 结果为准。

易错点

  • 只看编排文件就下结论:合并与覆盖规则会让实际取值不同,核对必须回到 inspect
  • 把 NanoCpus 当成核数:数值是纳核,少看三位数就会得出错误结论
  • 忽略 PidsLimit 为 0 的含义:不限制进程数时,一个疯狂 fork 的应用就能拖垮宿主
  • 把 CPU 配额当性能保障:配额只限制上限,不保证下限,资源争抢时仍需绑核或预留

数据来源与参考

  • Docker 官方 CLI 参考:docker inspect HostConfig(docs.docker.com)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌