use*_*669 33 docker dockerfile
我们如何在 docker history 命令的输出中看到第三列(CREATED BY)中的完整命令?
$ 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
Run Code Online (Sandbox Code Playgroud)
第三列 (CREATED BY) 是命令的缩写,这使得重建原始 Dockerfile 变得困难。是否可以在第三列中获得完整的命令?
谢谢阅读。
为了调试,我需要以表格格式查看完整的构建历史,而无需截断构建步骤。Docker Docs 示例通常不完整(或不存在)。@Alassane_Hdiaye 接受的答案可以工作,但如果在错误的地方使用会引发错误。经过几次尝试,我得到了 GoLang 模板表格式化程序来生成我需要的结果。
Docker GoLang 模板--format
选项适用于docker history
,但必须在 之后输入--format
,因为它修改了--format
,而不是docker history
。该docker history
命令仅接受 1 个参数。该--format
选项更改 的输出docker history
,并--no-trunc
修改该--format
选项。
命令序列必须是
docker history <image-id> --format <GoLang template spec> --no-trunc
该--no-trunc
选项下面--format
的命令行,因为它修改的--format
选项。
因此,对于表格格式的完整历史记录:
docker history <image-id> --format "table{{.ID}}, {{.CreatedBy}}" --no-trunc
Run Code Online (Sandbox Code Playgroud)
输出很乱,因为 Dockerfile RUN 命令可以换行很多行。
因此,将结果通过管道传输到 CSV 文件并在 Excel 中打开它(因为缺少更好的表格查看器)。
docker history <image-id> --format "table{{.ID}}, {{.CreatedBy}}" --no-trunc > image-id-history.csv
Run Code Online (Sandbox Code Playgroud)
所以现在我可以在 Excel 中看到完整的构建指令而不会被截断。
作为旁注,Docker history
不输出 RUN 和其他 dockerfile 构建关键字,但可以推断这些。但至少可以使用完整历史记录中的完整命令。
归档时间: |
|
查看次数: |
10613 次 |
最近记录: |