首页/云/Docker 容器速查/docker build --check 构建检查
镜像与构建107 条

docker build --check 构建检查

构建前的静态检查(BuildKit Build Checks):识别 Dockerfile 里的反模式与错误并给出建议,例如使用 latest 基础镜像、缺少 WORKDIR 等。

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

docker build --check 是什么

--check 让构建在真正执行之前先做一轮静态检查:把 Dockerfile 交给前端分析,指出不符合最佳实践的写法与潜在错误,例如用了最新标签的基础镜像、缺少工作目录、复制大量无关文件、参数未声明等。它不产生镜像,只给出结论,适合接在代码评审或流水线的早期环节,用很低的成本提前拦住一批问题。

基本信息

语法docker build --check . 或 docker buildx build --check --progress=plain .
输出内容按等级或类别列出的检查结论与改进建议
依赖版本较新的 buildx 与 Docker 版本;旧版会报未知标志
是否产出镜像不产出,仅做分析
适用场景提交前自检、流水线早期门禁、镜像规范巡检
配合方式与 plain 日志一起使用,便于把结论落到流水线日志

典型使用场景

  • 代码评审前自检,减少评审中的低级问题
  • 流水线早期门禁:检查不通过则直接失败,省下完整构建时间
  • 统一团队镜像规范:把常见反模式固化成检查项
  • 接手他人项目时快速了解 Dockerfile 的主要问题
  • 排查构建体积异常:从检查结论里找可疑指令

使用与解读

使用与解读
# 基础检查:输出结论,不构建镜像
docker build --check .

# buildx 环境并附带完整日志
docker buildx build --check --progress=plain . 2>&1 | tee check.log

# 按关键词过滤结论,便于接进流水线判断
grep -n -i -E 'warning|error|recommend' check.log | head -20

# 把检查接到提交前流程(示例:失败即中断)
docker build --check . && echo '检查通过,可以提交'

典型检查项

类别示例结论建议
基础镜像使用了不固定的标签固定到补丁版本或摘要
工作目录缺少 WORKDIR 声明显式声明工作目录
上下文复制了大量无关文件补 .dockerignore
参数使用了未声明或作用域外的构建参数在 FROM 之后重新声明
缓存效率依赖与源码在同一层复制拆分复制,先依赖后源码
可维护性单条指令过长或缺少注释拆分为可读的步骤
检查通过不等于镜像正确:它是静态分析,无法发现运行期问题(权限、端口冲突、依赖缺失)。完整验证仍要构建、启动并跑一遍关键路径。
旧版本不支持该参数时会直接报未知标志,先确认本地与流水线的 Docker 版本,再决定是否把它作为门禁项。

易错点

  • 旧版本环境不支持该参数,直接写进流水线会让所有构建失败,需先统一版本
  • 把静态检查当成发布前验证:运行期问题它一概看不到,仍需完整构建与启动测试
  • 检查结论较多时试图一次全部修复,改动面过大反而引入新问题,建议按影响排序分批处理
  • 只在新项目里启用,老项目长期不检查,反模式持续累积,规范落地效果有限

数据来源与参考

  • Docker 官方文档:Build checks(docs.docker.com/build/checks)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌