docker diff 命令可直接查看容器相较于原始镜像的文件系统改动,不依赖容器运行状态,仅比对可写层与镜像只读层;输出以 a(新增)、d(删除)、c(修改)标识变更类型,适用于排查异常、审计篡改、调试构建等场景。

直接用 docker diff 就能查出容器相比原始镜像做了哪些文件改动,它不关心容器是否在运行,只比对文件系统层的变化。
docker diff 基本用法
命令格式很简单:
docker diff CONTAINER
这里的 CONTAINER 可以是容器 ID 或容器名。比如:
docker diff my-nginxdocker diff 7a2b1c...
识别三种关键变化类型
输出结果每行开头是一个字母,代表该路径的变更性质:
- A:新增 —— 文件或目录在原始镜像里不存在,是容器运行后创建的(如日志、临时文件、用户手动添加的配置)
- D:删除 —— 原始镜像中存在,但被容器删掉了(注意:只删自己加的文件不会显示;只有删了镜像自带的内容才会标 D)
- C:修改 —— 文件内容或权限等发生了变动(比如配置文件被重写、二进制文件被更新)
典型使用场景
这个命令适合解决几类实际问题:
- 排查应用行为异常:网页突然不对了?用
docker diff快速定位哪些配置或静态资源被改过 - 确认容器是否被意外篡改:运维巡检时运行一次,看有没有非预期的 A 或 D 条目
- 辅助调试构建过程:配合
docker commit前后对比,验证某步操作是否按预期生成/删除了文件 - 分析容器“膨胀”原因:发现
/var/log或/tmp下大量 A 类条目,说明日志没轮转或缓存堆积
和 container-diff 的区别
docker diff 只看文件系统层面的增删改,轻量快速;而 container-diff 是第三方工具,能深入比较软件包版本、环境变量、启动命令等更广维度,适合镜像间深度审计。日常查文件变动,docker diff 够用且无需额外安装。











