V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
chaleaochexist
V2EX  ›  程序员

docker build 失败 如何调试?

  •  
  •   chaleaochexist · 2023-05-31 13:50:03 +08:00 · 1667 次点击
    这是一个创建于 553 天前的主题,其中的信息可能已经有所发展或是发生改变。

    之前老版本我记得 docker build 如果失败也会在 docker images 里看到中间结果, 也就是失败之前的那个镜像.我之前的习惯是 run 那个镜像 然后手动执行下一条看为什么报错. 去 debug.

    现在没有了, 失败了 docker images 里是空的.

    请问专业的运维大佬是如何调试 dockerfile 的?

    10 条回复    2023-05-31 16:40:30 +08:00
    defunct9
        1
    defunct9  
       2023-05-31 13:52:15 +08:00
    开 ssh ,让我上去看看
    SingeeKing
        2
    SingeeKing  
       2023-05-31 13:52:53 +08:00   ❤️ 1
    除非 multi-stage 不然应该不会存在所谓的「之前的那个镜像」的;这个可以用 BuildKit 然后指定 `--cache-to` 来保存每步缓存
    chaleaochexist
        3
    chaleaochexist  
    OP
       2023-05-31 13:58:29 +08:00
    @SingeeKing 难道我记错了..
    yasi
        4
    yasi  
       2023-05-31 14:03:05 +08:00
    进入 images
    docker run -ti --entrypoint /bin/sh xxx
    Latin
        5
    Latin  
       2023-05-31 14:03:48 +08:00
    docker 的设置 buildkit 为 true 时会折叠每层的日志输出 并且构件这层报错时也会忽略,失败构建也会保存到镜像库中
    photon006
        6
    photon006  
       2023-05-31 14:17:49 +08:00   ❤️ 1
    加 progress 参数:

    docker build --progress=plain --network=host -t hello/world:latest .
    hhjswf
        7
    hhjswf  
       2023-05-31 14:41:24 +08:00
    肉眼扫一眼
    tramm
        8
    tramm  
       2023-05-31 15:21:08 +08:00
    问如何调试不如直接贴 Dockerfile 来的实在, 哈哈
    taoge0224
        9
    taoge0224  
       2023-05-31 16:35:20 +08:00
    call me
    anubu
        10
    anubu  
       2023-05-31 16:40:30 +08:00   ❤️ 1
    基础镜像挂源码卷拉一个容器,在容器里手动执行 Dockerfile 中的指令进行调试。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3179 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 13:29 · PVG 21:29 · LAX 05:29 · JFK 08:29
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.