docker inspect 不监控挂载卷健康度,仅显示静态配置如Mounts、Binds和VolumesFrom;真实健康需宿主机工具检测磁盘空间、IO错误等。
docker inspect 本身不监控挂载卷的健康度,它只显示卷的配置和挂载信息,不提供磁盘空间、io错误、文件系统损坏等实际健康指标。
inspect 能看到什么卷信息
执行 docker inspect 容器名 可查看以下卷相关字段:
- Mounts:列出所有挂载点,含 Source(宿主机路径)、Destination(容器内路径)、Mode(如 rw/ro)、Type(bind 或 volume)
- HostConfig.Binds:绑定挂载的原始参数
- HostConfig.VolumesFrom:引用的其他容器卷
这些是静态配置快照,无法反映磁盘是否满、inode 是否耗尽、设备是否离线或读写是否卡顿。
真正判断卷健康需要外部手段
卷的健康属于宿主机存储层问题,需结合系统级工具验证:
- 对 bind 挂载:在宿主机上运行 df -h /path/on/host 查剩余空间,findmnt -T /path/on/host 确认挂载状态,dmesg | grep -i "error\|ext4\|nvme" 检查内核报错
- 对 named volume:先用 docker volume inspect vol_name 找到实际路径(通常在 /var/lib/docker/volumes/),再对其父目录做 df 和 ls -l
- 若使用 NFS/CIFS:检查 mount | grep nfs 是否仍为“mounted”,尝试 touch /mnt/nfs/testfile 验证可写性
自动化检查建议
可将卷健康检查纳入容器启动后探活逻辑中,例如:
- 在 HEALTHCHECK CMD 中加入 df /data | awk 'NR==2 {exit $5 > 90}'(当容器内挂载点使用超90%时返回1)
- 用 cron 或 systemd timer 在宿主机定期扫描 docker ps -q | xargs -r docker inspect --format='{{.Name}} {{range .Mounts}}{{.Source}} {{end}}',再批量跑 df
- 对接 Prometheus + node_exporter,采集 node_filesystem_avail_bytes 指标,设置告警阈值
inspect 是起点,不是终点;卷健康必须落地到操作系统层面验证。


















