当前位置: 首页 > 知识库问答 >
问题:

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

祝灼光
2023-03-14

我的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。

共有3个答案

穆睿才
2023-03-14

在Docker 20.10中,我也必须使用--no cache标志。否则,不会显示缓存的输出。

docker build --progress=plain --no-cache .
司寇苗宣
2023-03-14

只需在构建后使用此标志--progress=plain。

例如:

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")
董高畅
2023-03-14

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

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

添加--进步=平原将显示未从缓存加载的运行命令的输出。

如果不想使用buildkit,可以通过在shell中导出DOCKER\u buildkit=0来还原到旧的生成引擎,例如:

DOCKER_BUILDKIT=0 docker build ...

export DOCKER_BUILDKIT=0
docker build ...
 类似资料:
  • 问题内容: 我已经给出了如下所示的命令行, 命令: 错误显示 sed:-e表达式#1,字符22:命令后的多余字符 同时将“ s”选项设置为 错误显示为 sed:-e表达式#1,字符32:`s’的未知选项 问题答案: 似乎某些变量正在扩展为包含的值。使用不包含在任何变量中的其他定界符,例如 (您的第一个命令不是有效的表达式。)

  • 问题内容: 我已经给出了如下所示的命令行, 命令: 错误显示 sed:-e表达式#1,char 22:命令后的多余字符 同时将“ s”选项设置为 错误显示为 sed:-e表达式#1,字符32:`s’的未知选项 问题答案: 似乎某些变量正在扩展为包含的值。使用不包含在任何变量中的其他定界符,例如 (您的第一个命令不是有效的表达式。)

  • Computer says no. — Little Britain 一个问题的详细反馈会对解决问题有帮助。当你使用 exec 资源在节点上执行命令时, 并不总能轻易地找出其为何没有正确执行。如果命令返回一个非零的退出状态,Puppet 就会返回类似如下的错误消息: err: /Stage[main]//Node[cookbook]/Exec[this-will-fail]/returns: ch

  • 问题内容: 我有一个可加载的内核模块,其初始化如下 我还启用了正在使用的内核版本上启用的动态调试-ie 。 在模块的Makefile中,我在其中添加了一行,即文件名。 现在,我在执行此模块的insmod后检查了一下,在其中发现了以下几行 即使做了所有这些,令我失望的是,在dmesg的输出中找不到上述两个pr_debug语句。那我想念什么或做错什么呢? 问题答案: 假设是模块源文件,请将以下内容添加

  • 问题内容: 基本上我想知道为什么它什么都不输出: 您可以假设它应该产生输出,我已经运行另一行来确认 看来您不能多次通过管道传递tail的输出!有人知道这笔交易是什么,有解决方案吗? 编辑:到目前为止,要回答问题,该文件肯定具有应由grep显示的内容。作为grep是否这样做的证据: 输出正确显示,但是如果使用它代替: 没有输出显示。 如果真的有帮助,我正在运行ubuntu 10.04 问题答案: 在

  • 为什么toGray函数不在设备上显示输出,下面是我将图像转换为灰度的代码,我将代码更改为函数,但它不显示输出: