V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
treexie
V2EX  ›  程序员

ai-diving:让 LLM 替我盯着 Docker 镜像"是不是又胖了"

  •  
  •   treexie · 1h 44m ago · 94 views

    起因

    以前使用wagoodman/dive分析镜像优化空间,每次生成镜像之后自己执行命令过于麻烦,后来就diving-rs可以通过 webhook 的形式触发分析,再记录到数据库中定期分析。

    但用着用着发现两件事:

    1 、需要人工参与的工作一直都会滞后,甚于变成了形式工程(只记录无人分析) 2 、每个人对标准不一致,也没有统一的数据作为指标,最终也无法保证规则得到有效执行

    刚好赶上小米开放百万亿 token 的免费额度,懒人福音。把"人盯报告"换成"AI 盯报告":每次新 push ,把这次的 diving 报告 + 上次成功的 LLM 结论一起喂给模型,让它做对比分析。

    系统 prompt 写得比较简单(后续提供自定义),核心几条:

    • 表现良好的指标(体积减小、浪费率 0%、非 root )禁止提及,不要废话
    • 体积劣化必须穿透到具体 Layer + 具体文件,精确到 MB
    • OverlayFS 穿透判定:基础镜像的固化冗余禁止建议跨层 RUN rm -rf(那只会让镜像更大),只建议换基底
    • 新增 COPY/ADD 文件 owner 是否与 USER 倒挂

    加上"无异常就回一句健康通过;有异常就只说问题 + 改哪几行"的硬约束,输出基本没什么水分。

    流程

    Docker Hub Webhook --> ai-diving (入队 + dedupe) --> cron 每分钟抢一批 WAITING diving-rs (拉镜像 / 出 markdown) + 上次成功的 LLM --> 优化建议 markdown --> 企业微信机器人 / Resend 邮件

    输出长啥样

    完成后大概是这样的报告(示例):

    🚨 核心异常与劣化痛点

    • COPY 指令引入的 static-serveentrypoint.shhttpstat 文件所有权 (Owner 0:0 即 root) 与镜像运行时用户 (ubuntu) 存在权限倒挂,违反最小权限原则。

    🛠️ 必须执行的修复代码

    • USER ubuntu 指令前增加以下指令以修正文件所有权:
    RUN chown ubuntu:ubuntu /usr/local/bin/static-serve /usr/local/bin/httpstat /entrypoint.sh
    
    • 或在 COPY 指令时直接指定所有者(推荐):
    COPY --chown=ubuntu:ubuntu /static/target/release/static-serve /usr/local/bin/static-serve
    COPY --chown=ubuntu:ubuntu /static/entrypoint.sh /entrypoint.sh
    COPY --chown=ubuntu:ubuntu /usr/local/bin/httpstat /usr/local/bin/httpstat
    

    下次镜像稳定了再 push ,LLM 自己会回"与上次结论一致",静默不打扰。

    在线 demo / 仓库

    求拍砖、提 issue 、提建议。如果你也有"不依赖 docker daemon 的镜像分析"需求,diving-rs 拎出来单用也行。

    No Comments Yet
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2863 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 15:44 · PVG 23:44 · LAX 08:44 · JFK 11:44
    ♥ Do have faith in what you're doing.