--build-arg list Set build-time variables
--cache-from strings Images to consider as cache sources
-f, --file string Name of the Dockerfile (Default is 'PATH/Dockerfile')
--no-cache Do not use cache when building the image
-o, --output stringArray Output destination (format: type=local,dest=path)
--platform string Set platform if server is multi-platform capable
--progress string Set type of progress output (auto, plain, tty). Use plain to show container output (default "auto")
--pull Always attempt to pull a newer version of the image
-q, --quiet Suppress the build output and print image ID on success
-t, --tag list Name and optionally a tag in the 'name:tag' format
--target string Set the target build stage to build.
4条答案
按热度按时间csbfibhn1#
遇到同样的问题,我用
8zzbczxx2#
更新:既然这个问题已经被问到了,似乎每个人都在看到buildkit的输出变化后发现了它。Buildkit包括以下选项(
docker build --help
可以看到所有选项):许多人希望使用buildkit的选项是
--progress=plain
:如果你真的想看到以前的构建输出,你可以用一个环境变量禁用buildkit,但我倾向于建议不要这样做,因为buildkit中有很多功能你会失去(跳过未使用的构建步骤,并发构建步骤,多平台镜像,以及用于
RUN --mount...
等功能的Dockerfile的新语法):OP要求在映像本身中包含其构建的日志。通常我建议不要这样做,您希望这些日志在映像之外。
也就是说,最简单的方法是使用
tee
将所有命令输出的副本发送到日志文件。如果您希望将其附加到映像,请将运行命令输出到映像内部的日志文件,如下所示:然后,您可以运行一个快速的一次性容器来查看这些日志的内容:
如果你不需要将日志附加到镜像中,你可以记录每次构建的输出,只需对构建命令做一次修改(而不是对运行命令做大量修改),就像JHarris说的那样:
使用经典的docker build命令,如果您不使用
--rm=true
进行构建,那么您将拥有所有中间容器,并且每个中间容器都有一个日志,您可以使用最后,不要忘记图像中有一个层的历史记录。它们不显示每个命令的输出,但它对所有不记录任何输出的命令都很有用,并且知道每个层来自哪个构建,特别是当使用大量缓存时。
drnojrws3#
除了使用
--progress=plain
,还可以使用环境变量BUILDKIT_PROGRESS
您可以按以下方式使用它:
参考:https://docs.docker.com/engine/reference/commandline/buildx_build/#progress
zy1mlcev4#
使用此:https://github.com/jcalles/docker-wtee
阅读说明,请给予我反馈。
或者...
如果您需要从正在运行的container获取日志,并且container已暴露卷,请运行以下命令: