陆续上线高价值工具,敬请期待! 欢迎使用蜗牛工具箱·新工具持续上线中,欢迎收藏关注。如有建议欢迎反馈! 反馈途径·目前大家有任何反馈可以直接发我邮箱:lyfs814@163.com陆续上线高价值工具,敬请期待! 欢迎使用蜗牛工具箱·新工具持续上线中,欢迎收藏关注。如有建议欢迎反馈! 反馈途径·目前大家有任何反馈可以直接发我邮箱:lyfs814@163.com
v1.0 · 已上线中英双语纯客户端

Dockerfile 校验Dockerfile Linter

粘贴 Dockerfile,一键完成语法检查与最佳实践审查,逐行定位问题并给出修复建议。内容全程不上传。

本周使用—·收藏—·版本v1.0.0·最后更新今天·完全免费
最佳实践
·字符0
输入 DockerfileUTF-8 · 0 行
校验结果
# 校验结果会显示在这里…
校验

工具介绍

3 段详细说明

Dockerfile 校验是面向开发者的一站式 Dockerfile 审查工具,集语法检查与最佳实践审查于一体。粘贴 Dockerfile 一键扫描:指令拼写、参数数量、exec 形式 JSON、多阶段引用、镜像版本固定、apt 缓存清理等问题逐行定位,每条问题都附带修复建议。

所有解析都在浏览器内存中完成,内容不上传任何服务器。内置 18 条指令的完整语法规则与十余项社区最佳实践(源自 Docker 官方文档与 hadolint 等主流 linter 的共识),零依赖、零打包。

相比本地安装 hadolint / buildkit,本工具无需安装、打开网页即用,适合 CI 流水线外的人工审查、代码评审与学习 Dockerfile 规范。支持 ⌘+↵ 快捷键执行、校验报告一键复制。

基础知识 · Dockerfile 核心指令

18 条指令 · 6 组要点

Dockerfile 是逐行执行的镜像构建脚本,每条指令占一层。掌握以下 6 组核心要点,即可覆盖日常 90% 的编写场景,也是本工具检查规则的主要来源:

1FROM基础镜像 · 必须首条
Dockerfile 的第一条指令必须是 FROM(之前只能有 ARG 与注释)。固定版本:node:20-alpine 优于裸 node(默认拉 latest,构建不可复现);scratch 表示从零开始。多阶段写法:FROM golang:1.22 AS build。
2RUN构建期执行 · 每层一条
每条 RUN 在镜像中生成一层。多个命令用 && 串进同一层可减少层数;apt-get update 必须与 install 同层,并在层内 rm -rf /var/lib/apt/lists/* 清缓存,否则缓存永远留在镜像里。
3CMD vs ENTRYPOINT容器启动命令
ENTRYPOINT 是固定入口,CMD 提供默认参数、可被 docker run … 后的参数整体覆盖。两者都推荐 exec 形式:["npm", "start"] —— 必须是合法 JSON 字符串数组(双引号、不能有注释),shell 形式(不带方括号)则经 /bin/sh -c 包装。
4COPY vs ADD复制文件 · 优先 COPY
COPY src dst 行为简单可预测;ADD 额外支持本地 tar 自动解压与远程 URL 下载,行为隐式。官方建议:能用 COPY 就不用 ADD,仅解压 tar 或下载场景保留 ADD。两者至少需要「1 个源 + 1 个目标」。
5ENV vs ARG环境变量 vs 构建参数
ARG 只在构建期有效(可在 FROM 前声明、供 FROM 引用),不进入最终镜像;ENV 持久化到镜像、运行时可读。推荐 key=value 形式:ENV NODE_ENV=production;空格分隔的旧写法会把后面所有内容当成 value。
6USER / EXPOSE / HEALTHCHECK运行时画像三件套
USER appuser 末尾声明非 root 运行用户,降低逃逸风险;EXPOSE 3000 声明监听端口(文档性质,供 -P 与工具识别);HEALTHCHECK CMD curl -f http://localhost:3000/ || exit 1 让编排系统感知假死。三者共同构成容器的运行时画像。
多阶段构建速记
把「编译环境」与「运行环境」拆开,是 Dockerfile 最有效的瘦身手段——多阶段构建:
FROM golang:1.22 AS build —— 第一阶段装全套编译工具链,产出二进制。
FROM alpine:3.19 —— 第二阶段只包含运行时,镜像从 800 MB 缩到 20 MB。
COPY --from=build /app/server /usr/local/bin/ —— 用 --from=<阶段名>(或阶段序号 --from=0)把构建产物拷进最终镜像。
构建时用 docker build --target <阶段> 可只构建到某个阶段;校验工具会检查阶段名重复与 --from 引用是否存在。

使用说明

4 步快速入门
1
载入 Dockerfile
粘贴内容、点「上传文件」选择本地 Dockerfile(或直接拖入输入区),也可点「示例」一键填充;上传后自动开始校验
2
选检查范围
顶部工具栏切换最佳实践「开 / 关」,关闭后只做纯语法检查
3
点校验
点击「校验」或按 ⌘+↵,右侧按行号列出全部问题:错误红、警告黄、提示蓝
4
复制报告
点「复制报告」带走纯文本结果,可直接贴进 PR 描述或 issue

使用场景

5 个真实案例
01构建失败排查

docker build 报错看不懂时,粘贴 Dockerfile 定位指令拼写、参数缺失与 exec JSON 格式问题。

02镜像瘦身

检查 apt 缓存未清理、ADD 误用、推荐包未裁剪等体积杀手,一份报告指明可省的空间。

03代码评审辅助

PR 中涉及 Dockerfile 改动时,先跑一遍校验再人工评审,把低级问题挡在合并之前。

04安全加固

发现 latest 标签、root 运行、缺 HEALTHCHECK 等风险项,逐项加固后复检确认。

05学习 Dockerfile 规范

教学区覆盖核心指令语法与多阶段构建模式,新手对照示例理解每条规则背后的原因。

常见问题

10 个问答
Dockerfile 校验是什么?有什么用?

在不真正执行 docker build 的前提下,静态检查 Dockerfile 的指令语法与常见最佳实践。能提前发现拼写错误、参数缺失、JSON exec 形式写错等构建失败原因,以及镜像膨胀、root 运行等隐患。

我的 Dockerfile 内容会上传到服务器吗?

不会。所有解析在浏览器内存中完成,输入内容不上传任何服务器。可断网使用、关闭网络后再打开仍能正常使用。

和 hadolint 有什么区别?

hadolint 需要本地安装(Haskell 二进制),规则更细(如 shellcheck 集成)。本工具覆盖最常用的语法错误与十余项核心最佳实践,零安装、行级定位、每条附修复建议,适合快速人工审查与教学场景。

「错误 / 警告 / 提示」三类怎么理解?

错误:会导致 docker build 失败或行为明显异常,必须修复。警告:能构建但存在可复现性差、镜像膨胀等问题,强烈建议修复。提示:属于官方推荐的加分项(如 HEALTHCHECK、非 root 用户),按需采纳。

最佳实践检查能关掉吗?

可以。工具栏的「最佳实践」切到「关」即只做纯语法检查,适合临时调试或仅想确认能构建成功的场景。开关变化时会自动重新校验。

支持多阶段构建吗?

支持。会正确统计多个 FROM 阶段、识别阶段命名与重复命名,并校验 COPY --from=<阶段> 的引用是否存在,包括阶段序号写法 --from=0。

续行符(反斜杠)是怎么处理的?

工具会把以奇数个 \ 结尾的行与下一行合并为一条逻辑指令再检查,问题统一标注在起始行号上。这也是排查「指令不认识」报错的第一步——多数是续行符多写、少写导致。

能检查 .dockerignore 或 docker-compose.yml 吗?

本工具只针对 Dockerfile 语法。YAML 编排文件可先用「YAML⇋JSON」工具转换校验;.dockerignore 按行匹配规则较简单,可人工核对。

移动端能用吗?

支持。移动端输入/结果自动垂直堆叠,操作按钮自适应布局。手机上可粘贴微信 / 飞书里收到的 Dockerfile 片段快速检查。

校验结果可以一键复制吗?

可以。点击「复制报告」按钮即可把带行号、原因、建议的纯文本报告复制到剪贴板,方便贴进代码评审或工单。

相关工具

开发者分类

数据来源

隐私优先
算法:基于 Docker 官方 Dockerfile 参考文档的指令语法规则实现的前端静态分析器,覆盖 18 条指令;最佳实践规则源自 Docker 官方文档与 hadolint 等主流 linter 的社区共识。纯 TypeScript 实现,无第三方依赖、无 WASM。
隐私声明:所有解析均在浏览器内存完成,输入内容不上传任何服务器。本工具不记录任何输入、不埋任何分析点。可断网使用,关闭网络后再打开仍能正常使用。