在docker世界中,人们可以轻松查看docker容器的日志(即正在运行的镜像)。但是在镜像创建期间,通常会发出多个命令。例如,节点项目中的npm install命令。还要查看这些命令的日志。我 swift 从文档中进行搜索,但没有找到如何获取docker镜像的日志。是否可以?

最佳答案

最简单的方法是使用tee将所有命令输出的副本发送到日志文件。如果要将其附加到镜像,请使用以下命令将运行命令输出到镜像内部的日志文件:

RUN my-install-cmd | tee /logs/my-install-cmd.log

然后,您可以运行一个快速的一次性容器来查看日志内容:
docker run --rm my-image cat /logs/my-install-cmd.log

如果您不需要将日志附加到镜像,则可以像JHarris所说的那样,对构建命令进行一次更改(而不是对运行命令进行大量更改)来记录每个构建的输出:
docker build -t my-image . | tee my-image.build.log

如果您在不使用--rm=true的情况下进行构建,那么您将拥有所有中间容器,并且每个中间容器都有一个日志,您可以使用
docker logs $container_id

最后,不要忘记图像中存在图层的历史记录。它们没有显示每个命令的输出,但是对于所有不记录任何输出并且知道每个层的构建基础的命令特别有用,尤其是在使用大量缓存的情况下。
docker history my-image

关于docker - 如何查看docker镜像的日志?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37832575/

10-16 22:28