首页/云/Docker 容器速查/compose config --hash 检测配置变化
Compose 编排55 条

compose config --hash 检测配置变化

输出服务的配置哈希:对比两次哈希即可判断服务定义是否变化,适合在发布脚本里决定哪些服务需要重建。

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

配置哈希是干什么的

docker compose config --hash 输出服务配置的哈希指纹:对比两次输出即可判断哪些服务定义发生了变化,适合在发布脚本里决定需要重建的服务范围,避免每次发布都全量重启。

基本信息

语法docker compose config --hash [服务名…],或用 --hash='*'
输出按服务名映射到哈希值
用途服务配置变化检测
版本较新的 Compose V2 提供
替代做法对 config 输出做校验和比对

典型使用场景

  • 发布脚本里只重建配置真正变化的服务,缩短发布窗口
  • 变更审计:把每次发布的哈希留档,回溯哪次改动引入变化
  • 排查为什么每次发布都全量重启,找出哈希总在变化的服务
  • 多环境比对:同一份编排在不同环境展开后的差异确认
  • CI 里做配置漂移检测,发现有人绕开流程改了编排

基线留档与比对

基线留档与比对
docker compose config --hash='*' > /tmp/hash.new   # 本次指纹落盘
diff /tmp/hash.old /tmp/hash.new || echo 存在变化  # 与上次对比
docker compose config --hash web api                # 只看指定服务
cp /tmp/hash.new /tmp/hash.old                      # 更新基线
sha256sum <(docker compose config)                  # 老版本的替代做法

哪些变化进哈希

关注点是否进入哈希说明
服务镜像与命令是属于服务定义本身
环境变量展开后的值是改变量即使文件没改也会变
绑定挂载的宿主文件内容否不属于编排定义
同标签镜像的新内容否标签未变则不体现
哈希比对反映编排定义的变化,但同标签镜像被重新推送(内容变了而标签没变)不在范围内,镜像更新要靠 digest 或额外校验。
不同 Compose 版本对哈希的实现可能有差异,跨版本比对结论不可直接套用,比对要在同一环境同一版本内做。
老版本 Compose 不支持 --hash,可以退化为对 docker compose config 的输出做 sha256sum 比对,效果接近。
把哈希比对接进流水线时,首次运行没有旧基线,要先落一份基线再启用差异判断,否则第一次会被判成全量变化。

易错点

  • 把哈希当成重建决策的唯一依据时,注意镜像更新(同标签新内容)不在哈希范围内
  • 改动了环境变量即使编排文件没改,哈希也会变化,这是预期行为,不要当成误报
  • 跨 Compose 版本比对哈希的结论不可靠,比对要在同版本同环境内进行
  • 把哈希文件放在临时目录随流水线清理而丢失,就无法做历史对比,基线要落到受控位置
  • 哈希变了就无条件重建全部服务,等于把差异检测的价值抵消,重建范围要按有变化的服务收敛

数据来源与参考

  • Docker 官方 CLI 参考:docker compose config 的 --hash(docs.docker.com)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌