内容简介:You’ve got a nice newSo—now what? That log file isn’t on your host computer’s filesystem, it’s in the temporary image that build was creating.How do you read that log file? By understanding just a little bit more about how Docker builds image.
You’ve got a nice new Dockerfile
, and it’s time to try it out:
$ docker build -t mynewimage . Sending build context to Docker daemon 3.072kB Step 1/3 : FROM python:3.8-slim-buster ---> 3d8f801fc3db Step 2/3 : COPY build.sh . ---> 541b65a7b417 Step 3/3 : RUN ./build.sh ---> Running in 9917e3865f96 Building... Building some more... Build failed, see /tmp/builderr024321.log for details The command '/bin/sh -c ./build.sh' returned a non-zero code: 1
So—now what? That log file isn’t on your host computer’s filesystem, it’s in the temporary image that build was creating.
How do you read that log file? By understanding just a little bit more about how Docker builds image.
How Docker builds images
To a first approximation, Docker builds images inside containers.
In particular, each RUN
command is a new container started from the image created by the previous step, running whatever the command is.
That means that build.sh
step was run in a container.
We can list containers:
$ docker container ls $
Nothing there—because it’s not a running container. So let’s look at dead containers:
$ docker container ls -a CONTAINER ID IMAGE COMMAND CREATED STATUS 9917e3865f96 541b65a7b417 "/bin/sh -c ./build.…" 3 minutes ago Exited (1) 3 minutes ago
And there it is!
If you have multiple dead containers, you can recognize yours either by the command line, or by the image ID.
Notice that the image ID, 541b65a7b417, is the same as the image ID created in step 2 in the docker build
we ran earlier.
It’s in the container!
We’ve made some progress: we know that the log file is probably inside that container. And now we can copy the file out of the container.
The container ID is 9917e3865f96
, but we can just use the first few characters to refer to it:
$ docker container cp 9917:/tmp/builderr024321.log . $ cat builderr024321.log Error, missing flux capacitor!
And there you have it: the build failed because of a missing flux capacitor.
以上所述就是小编给大家介绍的《Where’s that log file? Debugging failed Docker builds》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
算法详解(卷1)——算法基础
[美]蒂姆·拉夫加登(Tim Roughgarden) / 徐波 / 人民邮电出版社 / 2019-1-1 / 49
算法是计算机科学领域最重要的基石之一。算法是程序的灵魂,只有掌握了算法,才能轻松地驾驭程序开发。 算法详解系列图书共有4卷,本书是第1卷——算法基础。本书共有6章,主要介绍了4个主题,它们分别是渐进性分析和大O表示法、分治算法和主方法、随机化算法以及排序和选择。附录A和附录B简单介绍了数据归纳法和离散概率的相关知识。本书的每一章均有小测验、章末习题和编程题,这为读者的自我检查以及进一步学习提......一起来看看 《算法详解(卷1)——算法基础》 这本书的介绍吧!