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