我正在使用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