# Dockerfile 检查器（Hadolint 规则集）

粘贴 Dockerfile，离线执行 Hadolint 风格的静态分析（无需 Docker 守护进程）：基础镜像标签、USER root、sudo、apt/apk/yum/dnf 包管理卫生、npm/pip/yarn 版本锁定、ADD vs COPY、层缓存合并、管道 pipefail、EXPOSE 端口、ENV 敏感信息等 30+ 条规则，按 critical/warning/info 分级并给出行号、原因与修复示例，附带逐行标注的源码视图。

> 标准页面: https://elysiatools.com/zh/tools/dockerfile-linter

- **分类:** Development

- **关键词:** dockerfile, hadolint, 静态检查, docker 最佳实践, 容器镜像

## 概述

规则编号与严重级别对齐 Hadolint v2.15 源码（如 DL4000 MAINTAINER=error、DL3025 shell 形式 CMD=warning、DL3057 HEALTHCHECK 缺失默认忽略可选开启）。解析遵循 Dockerfile 语义：# escape= 指令、反斜杠续行、BuildKit heredoc（RUN <<EOF）、JSON 数组形式、多阶段构建时按 FROM 重置状态、# hadolint ignore=DLxxxx 行内抑制。包管理规则按命令词元判断（apt-get update 后未在同一条 RUN 中 rm -rf /var/lib/apt/lists → DL3009 等），npm install 包未带 @version → DL3016，pip install 未带 == 且未用 --no-cache-dir → DL3013/DL3042。BP001 为平台扩展最佳实践：COPY . . 时提醒维护 .dockerignore。

## 输入项

- **Dockerfile 内容** (textarea): FROM node:20-alpine WORKDIR /app COPY . . RUN npm ci --omit=dev CMD \["node", "server.js"\]
- **最低显示级别** (select)
- **包含 HEALTHCHECK 检查（DL3057）** (checkbox)

## 适用场景

- 提交构建前，先排查 latest 标签、USER root、未清理包缓存和明文密钥等反模式。
- 审查多阶段生产镜像是否锁定依赖、使用非 root 用户、JSON 形式 CMD 以及合法 EXPOSE。
- 对照 Hadolint 规则核对包管理命令、ADD 误用和 HEALTHCHECK，并按级别过滤结果。

## 工作原理

- 将完整 Dockerfile 粘贴到「Dockerfile 内容」，解析支持续行、多阶段 FROM、BuildKit heredoc、JSON 数组指令和 # hadolint ignore=DLxxxx。
- 选择最低显示级别（全部发现、仅警告和错误、或仅错误），并决定是否启用 HEALTHCHECK（DL3057）。
- 按 Dockerfile 语义与命令词元匹配规则，输出分级发现、行号、原因与修复示例。
- 结果附带逐行标注的源码视图，便于对照原文定位问题。

## 使用案例

- 开发人员粘贴 Node/Python/apt 构建文件，检查版本锁定、层缓存合并和 ADD/COPY 用法。
- 运维核对生产镜像是否仍以 root 运行、端口是否合法、是否缺少 HEALTHCHECK。
- 代码评审时用典型反模式样例对照 MAINTAINER、sudo、未清理 apt 列表和 ENV 密钥。

## 常见问题

### 需要安装 Docker 或 Hadolint 吗？

不需要。检查完全离线完成，无需 Docker 守护进程。

### 规则编号和严重级别如何对应？

对齐 Hadolint v2.15，例如 DL4000（MAINTAINER）为错误，DL3025（shell 形式 CMD）为警告。

### 如何忽略某条规则？

在对应行写 # hadolint ignore=DLxxxx 即可行内抑制。

### 「最低显示级别」有什么用？

可只看错误，或同时看警告；选「全部发现」时包含 info。

### COPY . . 为什么会提示？

平台扩展规则 BP001 会提醒维护 .dockerignore，避免把无关文件打进镜像。

## 相关工具

- [色彩视觉无障碍检查器](https://elysiatools.com/zh/tools/color-vision-accessibility-checker): 计算 WCAG 对比度，模拟主要色觉缺陷，并可对 UI 截图中的低对比区域做标记。
- [邮件 HTML 检查器](https://elysiatools.com/zh/tools/email-html-linter): 检查邮件 HTML 模板的客户端兼容性:不支持 flex/grid、未内联 CSS、Outlook Word 渲染陷阱、表格布局问题、无障碍缺失。覆盖 Gmail/Outlook/Apple Mail 等主流客户端的已知限制。
- [无障碍合规检测器](https://elysiatools.com/zh/tools/accessibility-checker): 检测 HTML、网页或设计稿图片中的常见 WCAG 2.1 问题，并给出可直接修复的建议
- [package.json 依赖审计器](https://elysiatools.com/zh/tools/package-json-dependency-auditor): 审计 package.json 的依赖卫生、版本范围质量，并可选地从 package-lock.json 或 yarn.lock 深入检查传递依赖树。会标记重复依赖、通配符或预发布版本、未排序键、缺失元数据，以及运行时/开发时依赖误分类问题。
- [Tailwind 色板同步器](https://elysiatools.com/zh/tools/tailwind-color-palette-sync): 输入一组 HEX,选择命名规则(色阶 50–950 / 单名 / 对象嵌套),自动生成 tailwind.config.ts 的 theme.extend.colors 片段,每个色阶同时给出 WCAG AA/AAA 对比等级,可选暗色模式。
- [无障碍审计报告生成器](https://elysiatools.com/zh/tools/accessibility-audit-report-generator): 检查 HTML 或 URL 中的常见 WCAG 问题，并导出按严重程度分组的 PDF 报告
- [图片配色提取器](https://elysiatools.com/zh/tools/image-color-palette-extractor): 上传图片后提取主色调，导出代码可用的色板片段，并检查对比度
- [VP8 图像分析器](https://elysiatools.com/zh/tools/vp8-image-analyzer): 使用 Sharp 分析 WebP/VP8 图像，生成灰度位移图，并用 Three.js 渲染可旋转的 3D 浮雕表面

## 示例

- [Android Java 图像处理示例](https://elysiatools.com/zh/samples/android-image-processing-java): Android Java 图像处理示例，包括图像读取保存、缩放和格式转换
- [Android Kotlin 图像处理示例](https://elysiatools.com/zh/samples/android-image-processing-kotlin): Android Kotlin 图像处理示例，包括图像读取保存、缩放和格式转换
- [Web Python 图像处理示例](https://elysiatools.com/zh/samples/web-image-processing-python): Web Python 图像处理示例，使用 PIL/Pillow 包括读取、保存、缩放和格式转换
- [Web Rust 图像处理示例](https://elysiatools.com/zh/samples/web-image-processing-rust): Web Rust 图像处理示例，包括图像读取保存、缩放和格式转换

## 相关内容

- [图片格式转换与动画导出工具](https://elysiatools.com/zh/hubs/image-convert): 在一个专题里比较 JPG、PNG、GIF、AVIF、WebP、TIFF、ICO、base64 以及动画导出相关的图片格式转换工具。
- [图片整理、修饰与批处理准备工具](https://elysiatools.com/zh/hubs/image-utility): 把图片清理、裁边、补边、加框、批量缩放压缩、水印和视觉修饰工具集中到一个专题中，适合素材整理流程。
- [图片元数据、EXIF 与隐私清理工具](https://elysiatools.com/zh/hubs/image-metadata): 在一个专题中比较图片元数据查看、EXIF/IPTC/XMP 检查、方向修正、元数据编辑和隐私清理工具，适合图片发布流程。
- [图像清理、缩放与细节增强工具](https://elysiatools.com/zh/hubs/image-cleanup-resize-and-detail-enhancement): 通过方向校正、裁边、降噪、缩放、锐化和批量转换准备交付图片。
