通过 dockfile 来 build 镜像时失败产生的文件怎么查看

2022-02-17 11:20:39 +08:00
 IAmAlive

通过 dockfile 来 build 镜像时失败了,但是过程中生成了一个错误日志在 /tmp 目录下,请问这个日志能查看到吗。 如果能看到的话需要怎么看呢。

1584 次点击
所在节点    程序员
7 条回复
rbe
2022-02-17 11:39:34 +08:00
Cmdhelp
2022-02-17 11:44:30 +08:00
docker ps -a

docker log -f xxxxx
IAmAlive
2022-02-17 11:44:40 +08:00
@rbe 镜像没有生成出来也可以吗,我记得 docker cp 是需要有容器的。
Vegetable
2022-02-17 12:05:40 +08:00
一个不太聪明,但是可以的方案

将 dockerfile 失败那步开始的内容都注释掉,build

进入这个半成品容器,手动执行失败那条命令,然后去看日志
Vegetable
2022-02-17 12:09:39 +08:00
试了一下,另一个方案,没深入研究

文件如下
```
FROM ubuntu:20.04

WORKDIR /root
RUN touch 1.txt && exit 1
```

这个 dockerfile 打包会失败,输出如下
[+] Building 2.6s (6/6) FINISHED
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 101B 0.0s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> [internal] load metadata for docker.io/library/ubuntu:20.04 2.0s
=> [1/3] FROM docker.io/library/ubuntu:20.04@sha256:669e010b58baf5beb2836b253c1fd5768333f0d1dbcb834f7c07a4dc93f474be 0.0s
=> CACHED [2/3] WORKDIR /root 0.0s
=> ERROR [3/3] RUN touch 1.txt && exit 1


此时执行
docker rum --rm -it 709faeff4e2faa40d4bf2a076493bd1e4945a435d55b390427bd358e8e27efeb bash

可以进入[1/3]那步所在的文件层,看到 1.txt 。
root@d89352d51fc5:~# ls
1.txt
rbe
2022-02-17 12:14:52 +08:00
@IAmAlive #3 不好意思看错了,原来是没有镜像,我以为是容器 run 失败了。
有个鸡贼的办法,直接在 dockerfile 里 RUN cat /tmp/xxx.log 呗
IAmAlive
2022-02-17 12:18:07 +08:00
@Vegetable @rbe 上面的方法试了下可以的,谢谢

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/834452

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX