为什么 docker build 不显示命令的任何输出?

新手上路,请多包涵

来自我的 Dockerfile 的片段:

 FROM node:12.18.0
RUN echo "hello world"
RUN psql --version

当我运行 docker build . 我看不到这两个命令的任何输出,即使它们没有被缓存。文档说 docker build 默认情况下是冗长的。为什么我看不到命令的输出?我以前见过他们。

构建时的输出:

 => [7/18] RUN echo "hello world"                         0.9s

构建完成后我看到的输出:

 => CACHED [6/18] RUN apt-get install postgresql -y      0.0s
=> [7/18] RUN echo "hello world"                        6.4s
=> [8/18] RUN psql --version                           17.1s

Dockerfile 是从基于 Debian 9 的 node:12.18.0 创建的。

Docker 版本 19.03.13,构建 4484c46d9d。

原文由 Noname 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 2.5k
2 个回答

您显示的输出来自 buildkit,它是 docker 附带的经典构建引擎的替代品。您可以使用 --progress 选项调整输出:

   --progress string         Set type of progress output (auto, plain, tty). Use plain to show container output
                            (default "auto")

添加 --progress=plain 将显示未从缓存加载的运行命令的输出。这也可以通过设置 BUILDKIT_PROGRESS 变量来完成:

 export BUILDKIT_PROGRESS=plain


如果您正在调试构建,并且步骤已被缓存,请将 --no-cache 添加到构建以重新运行步骤并重新显示输出:

 docker build --progress=plain --no-cache ...


如果您不想使用 buildkit,您可以通过在 shell 中导出 DOCKER_BUILDKIT=0 来恢复到旧的构建引擎,例如:

 DOCKER_BUILDKIT=0 docker build ...

或者

export DOCKER_BUILDKIT=0
docker build ...

原文由 BMitch 发布,翻译遵循 CC BY-SA 4.0 许可协议

只需在 --progress=plain build

例如:

 docker-compose build --progress=plain <container_name>

或者

docker build --progress=plain .

如果您不想每次都使用此标志,请通过执行以下操作永久告诉 docker 使用此标志:

 export BUILDKIT_PROGRESS=plain

这是您键入 docker build --help 时的官方文档。

 --progress string         Set type of progress output (auto, plain, tty). Use plain to show container output (default "auto")

原文由 Ash Singh 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题