Dockerfile 检查

检查 Dockerfile 的常见最佳实践问题

浏览器内运算Dockerfile Linter排错型01格式化与校验

什么是Dockerfile 检查

Dockerfile 检查工具内置 10 条高频最佳实践规则,覆盖基础镜像标签、ADD 与 COPY 的选择、apt-get 用法、镜像层数、非 root 用户与健康检查,并给出对应的 hadolint 规则编号。检查在浏览器本地完成。

怎么用Dockerfile 检查

  1. 1粘贴 Dockerfile 内容。
  2. 2查看右侧检查结果,警告级问题优先处理。
  3. 3打开「只看警告」可过滤掉建议类提示。
  4. 4需要完整规则集时在 CI 中接入 hadolint。

在代码里怎么实现?

一次性操作用上面的工具,重复性工作建议固化到脚本或项目里。

# 官方镜像,可直接在 CI 里跑
docker run --rm -i hadolint/hadolint < Dockerfile

# 只把警告及以上视为失败
docker run --rm -i hadolint/hadolint hadolint --failure-threshold warning - < Dockerfile

常见错误与排查

现象成因修复
构建时 apt-get 报「Unable to locate package」apt-get update 与 install 写在两条 RUN 里,update 那层被缓存后索引已过期。把 update 与 install 合并到同一条 RUN,并在末尾清理 /var/lib/apt/lists。
容器内文件属主是 root 导致挂载卷权限异常缺少 USER 指令,进程以 root 身份运行。创建非特权用户并在 CMD 之前切换 USER。

常见问题

这里的规则编号和 hadolint 一致吗?+

一致,便于你按编号查阅出处与完整说明。但本工具只实现了 10 条最常见的规则,不是 hadolint 的完整替代,正式项目仍建议在 CI 里接入 hadolint。

为什么建议合并 RUN 指令?+

每条 RUN 都会产生一个镜像层,层越多镜像越大、拉取越慢,而且在前一层里删除的文件并不会真正从镜像中消失。把相关命令用 && 合并,并在同一层内完成清理,才能真正减小体积。

相关工具

全部工具