在 Docker 中使用 BuildKit 时,如何查看 RUN 命令的输出?

当使用 DOCKER_BUILDKIT=1构建 Docker 映像时,有一个非常酷的进度指示器,但没有命令输出。如何查看调试构建的命令输出?

25562 次浏览

Have you tried --progress=plain?

Example:

FROM alpine
RUN ps aux

Relative output of DOCKER_BUILDKIT=1 docker build --progress=plain -t test_buildkit .:

#5 [2/2] RUN ps aux
#5       digest: sha256:e2e4ae1e7db9bc398cbcb5b0e93b137795913d2b626babb0f148a60017379d86
#5         name: "[2/2] RUN ps aux"
#5      started: 2019-04-19 09:02:58.922035874 +0000 UTC
#5 0.693 PID   USER     TIME  COMMAND
#5 0.693     1 root      0:00 ps aux
#5    completed: 2019-04-19 09:02:59.721490002 +0000 UTC
#5     duration: 799.454128ms

👉 Also, check the very useful answer by @Cocowalla below about BUILDKIT_PROGRESS=plain

As well as using --progress=plain on the command line, you can also set an environment variable:

BUILDKIT_PROGRESS=plain

I find this particularly useful for CI builds, where I always want the full log.

With PR #2954 you can specify:

export NO_COLOR=1

There have also been changes in recent versions to make the defaults more readable.

You can pick your own color scheme with the BUILDKIT_COLORS variable, e.g.:

export BUILDKIT_COLORS=run=123,20,245:error=yellow:cancel=blue:warning=white

(Note, if the above doesn't work for you, then that PR likely hasn't made it into your Desktop install yet.)

Other options to solve this include switching to plain output with either the --progress=plain option or export BUILDKIT_PROGRESS=plain. Or you could disable buildkit with export DOCKER_BUILDKIT=0.