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

我们如何在docker history命令的输出中看到完整的命令?

洪昊然
2023-03-14

我们如何在docker history命令输出的第三列(由创建)中看到完整命令?

$ docker history docker.company.net/docker-base-images/image:1.0

IMAGE               CREATED             CREATED BY                                      SIZE
c0bddf343fc6        7 days ago          /bin/sh -c #(nop)  LABEL com.company.build.r…   0B                  
<missing>           7 days ago          /bin/sh -c #(nop)  ARG commit                   0B                  
<missing>           7 days ago          /bin/sh -c #(nop)  ARG date                     0B                  
<missing>           7 days ago          /bin/sh -c #(nop)  ARG repo                     0B                  
<missing>           7 days ago          /bin/sh -c #(nop)  ARG org                      0B                  
<missing>           7 days ago          /bin/sh -c #(nop)  ARG version                  0B                  
<missing>           7 days ago          /bin/sh -c #(nop)  USER [company]               0B                  
<missing>           7 days ago          /bin/sh -c apk --no-cache add openjdk8-jre-b…   72.2MB              
<missing>           7 days ago          /bin/sh -c #(nop)  USER [root]                  0B                  
<missing>           7 days ago          /bin/sh -c #(nop)  USER [company:company]       0B                  
<missing>           7 days ago          |5 commit=d64d27b07439e6cfff7422acafe440a946…   3.92MB              
<missing>           7 days ago          /bin/sh -c #(nop)  LABEL com.company.build.r…   0B                  
<missing>           7 days ago          |5 commit=d64d27b07439e6cfff7422acafe440a946…   4.85kB              
<missing>           7 days ago          /bin/sh -c #(nop)  ARG commit                   0B                  
<missing>           7 days ago          /bin/sh -c #(nop)  ARG date                     0B                  
<missing>           7 days ago          /bin/sh -c #(nop)  ARG repo                     0B                  
<missing>           7 days ago          /bin/sh -c #(nop)  ARG org                      0B                  
<missing>           7 days ago          /bin/sh -c #(nop)  ARG version                  0B                  
<missing>           5 weeks ago         /bin/sh -c #(nop)  CMD ["/bin/sh"]              0B                  
<missing>           5 weeks ago         /bin/sh -c #(nop) ADD file:88875982b0512a9d0…   5.53MB              

第三列(CREATED BY)是命令的缩写,这使得重建原始Dockerfile变得困难。是否可以在第三列中获得完整的命令?

感谢阅读。

共有2个答案

池麒
2023-03-14

为了便于调试,我需要以表格格式查看完整的构建历史,而不需要截断构建步骤。Docker Docs示例通常不完整(或不存在)。@Alassane_Hdiaye接受的答案可以工作,但如果在错误的地方使用,就会抛出错误。经过几次尝试,我得到了GoLang模板表格式化程序,以生成所需的结果。

Docker GoLang模板--format选项适用于Docker history,但必须在--format之后输入,因为它修改的是--format,而不是Docker historydocker history命令只接受一个参数。--format选项更改docker history的输出,--no trunc修改--format选项。

命令序列必须是

<代码>docker历史

命令行上的--no trunc选项后面跟着--format,因为它修改了--format选项。

因此,对于表格格式的完整历史:

docker history <image-id> --format "table{{.ID}}, {{.CreatedBy}}" --no-trunc

输出很混乱,因为Dockerfile运行命令可以包装许多行。

因此,将结果传输到CSV文件并在Excel中打开它(因为缺乏更好的表查看器)。

docker history <image-id> --format "table{{.ID}}, {{.CreatedBy}}" --no-trunc > image-id-history.csv

所以现在我可以在Excel中看到完整的构建说明,无需截断。

作为旁注,Docker history不会输出RUN和其他dockerfile build关键字,但可以推断出这些关键字。但至少有完整历史记录中的完整命令可用。

许寒
2023-03-14

您可以添加标志--no trunc,以查看完整的命令。

 类似资料:
  • 它是这个问题的补充,其中典型的解决方案是使用命令显示 PS:没有人使用选项,我如何以最简单的即插即用方式使用它?

  • 它是这个问题的补充,其中典型的解决方案是使用命令显示 PS:没有人使用选项,如何以最简单的即插即用方式使用它?

  • 问题内容: 我正在使用JSch连接到SSH并执行命令。其中一个命令给出了很大的输出。在终端中,如果执行命令,则必须按Enter键才能查看整个输出。使用JSch,我无法检索整个输出。 当我使用交互式终端登录时,命令输出在填充屏幕后停止并等待。 该代码取自 如何在String中获取jschshell命令输出: 问题答案: 通常,您不应使用“ shell”通道来自动执行命令。 “外壳”通道旨在实现交互式

  • 用 history 有一个很奇葩的地方 这个窗口输入的命令 xxxx,在另一个窗口 history 看不到刚刚执行的 xxxx

  • 詹金斯·弗。2.176.1声明式管道,试图从一个阶段获得蝙蝠命令输出,以设置另一个阶段的代理标签, 当通过bat命令(“echo%computername%”设置变量时,我可以很好地从步骤中读取变量(我得到:V-COMP-S6-CI3,这正是我所需要的。) 我不能设法把它设置在代理标签中。当我尝试在另一个阶段设置代理{标签${winCompName}}时,我得到:没有标签为c:\jenkins\b

  • 我想让我的Bash脚本对最终用户来说更加优雅。当Bash执行命令时,如何隐藏输出? 例如,当Bash执行时 以下内容将显示给执行Bash的用户: 现在我想对用户隐藏这一点,而是显示: 我怎样才能完成这项任务?我一定会帮助使脚本更加用户友好。如果发生错误,则应向用户显示。 我想知道如何显示相同的消息,而一组命令正在执行。