ai-diving:让 LLM 替我盯着 Docker 镜像"是不是又胖了" - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
请不要在回答技术问题时复制粘贴 AI 生成的内容
treexie

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

  •  
  •   treexie 23h 31m ago 601 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     3279 Online   Highest 667       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 33ms UTC 13:30 PVG 21:30 LAX 06:30 JFK 09:30
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86