如何将 docker 构建的输出捕获到文件?



我正在使用docker buildkit来构建一个镜像,它从docker文件中的命令产生了很多输出。 构建中出现问题,终端上有很多文本需要滚动。 我想将其捕获到一个文件中,在那里我可以用我的文本编辑器搜索它。 但是,似乎 docker 将输出直接写入终端,而不是通过 stdout 或 stderr。

那是:

$ docker build . <various args> 2>&1 > build.log

仍然生成输出到终端,并且 build.log 为空。

我找到了一个建议--progress=plain的页面,但这似乎只影响输出的内容,而不是输出的位置。

$ docker --version
Docker version 20.10.12, build e91ed57

这对我有用:

docker build -t nice-image . > bla.log

使用Docker version 20.10.7, build v20.10.7和 zsh shell。

遇到了这个问题,并在Docker论坛中找到了答案。简而言之,输出不是写入标准输出流(stdout),而是写入标准错误流(stderr)。这对我有用:

# write everything to build.log
docker build --no-cache --progress=plain  . &> build.log

其他可以尝试的事情是:

# only write error output to build.log
docker build --no-cache --progress=plain  . 2> build.log
# stream output to console and write it to build.log
docker build --no-cache --progress=plain . 2>&1 | tee build.log

最新更新