关于 layercheck
layercheck 是无需 Docker daemon 或镜像构建即可分析 Dockerfile 的命令行工具和 stdio MCP 服务。它面向开发者,检查层数与大小,并识别可能浪费镜像空间或构建缓存的特定写法。
主要功能
- 01解析 Dockerfile 指令及续行
- 02统计产生镜像层的指令
- 03按大小排列提供的镜像层
- 04标记连续的 RUN 指令
- 05检测过早的宽泛 COPY、APT 残留和本地 ADD
适用场景
- 01根据提供的 docker history 大小定位大镜像层
- 02发现可能浪费镜像空间的 Dockerfile 写法
- 03检查影响缓存的 COPY 位置
- 04核对镜像层大小输入与指令数量
MCP 相关
提供 `analyze_dockerfile_layers` 工具,接收 Dockerfile 文本和可选的镜像层大小,并返回层数、大小排序和浪费标记等分析结果。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
1收录的工具列表 · 更新于 1 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| dockerfile | string | 是 | Dockerfile 文本 |
| layer_sizes | array | 否 | 每条生成层的指令(RUN、COPY、ADD)的字节大小,按 Dockerfile 中的顺序排列,与 docker history 的报告方式一致;数组长度必须等于生成层的指令数量 |
详细介绍
layercheck
Dockerfile 中的每条 RUN、COPY 和 ADD 指令都会在镜像中留下一个层,而镜像大小和构建缓存问题都与这些层有关。layercheck 会将 Dockerfile 作为纯文本读取——无需 Docker 守护进程,也无需构建——并报告分析结果:
- 列出每条指令,将
\续行合并,并跳过空行和#注释;同时标明该指令是否会生成一个层 - 列出层数;如果你提供每层大小(如
docker history所示),还会列出总大小和按大小从大到小排序的层,让最大的层首先呈现 - 标记可确定的浪费,并指出触发标记的行:
CONSECUTIVE_RUN— 一条 RUN 紧接在另一条 RUN 后;两者可以合并为一个层BROAD_COPY_EARLY— 在依赖安装步骤之前放置了COPY . .(或./),每次源代码变更都会破坏其缓存APT_LEFTOVER—apt-get install所在的同一条 RUN 指令中,没有删除/var/lib/apt/listsADD_LOCAL— 使用 ADD 处理普通本地文件,而 COPY 是更清晰的指令(远程 URL 和压缩包不受此限)
如果提供的大小数量与会生成层的指令数量不一致,layercheck 会指出这一情况,并列出两边的数量,而不会静默地错位匹配。
CLI
npx @reneturcios/layercheck analyze --dockerfile Dockerfile
npx @reneturcios/layercheck analyze --dockerfile Dockerfile --sizes sizes.json
npx @reneturcios/layercheck --version
sizes.json 是一个 JSON 数组,其中的数字表示每条会生成层的指令对应的字节数,顺序与 Dockerfile 中的指令一致。
分析结果会以一个 JSON 对象输出:
{layer_count, total_size_bytes, instructions, biggest_layers, waste_flags}。
退出码:成功时为 0,运行时错误(包括文件无法读取或 sizes 数量不匹配)时为 1,用法错误时为 2。
MCP 服务
npx -y @reneturcios/layercheck mcp
MCP 客户端配置:
{
"mcpServers": {
"layercheck": {
"command": "npx",
"args": ["-y", "@reneturcios/layercheck", "mcp"]
}
}
}
工具
analyze_dockerfile_layers— 分析 Dockerfile 的层,并标记浪费的层。dockerfile(字符串,必填)— Dockerfile 文本layer_sizes(数字数组,可选)— 每条会生成层的指令对应的字节数,顺序与 Dockerfile 中的指令一致;数组长度必须等于会生成层的指令数量
Docker
docker run -i ghcr.io/cloudcorprecords/layercheck
docker run --rm -v "$PWD:/w" ghcr.io/cloudcorprecords/layercheck analyze --dockerfile /w/Dockerfile
开发
npm install
npm run build # tsc -> dist/
npm test # tsx --test test/*.test.ts (pure local, no network)
npm run dev # run the CLI from source
许可证
MIT — Copyright (c) 2026 Rene Turcios
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。