docker history --format {{.CreatedBy}} --no-trunc=true bitnami/zookeeper:3.7.0-debian-10-r242|sed "s/\/bin\/sh\ -c\ \#(nop)\ //g"|sed "s/\/bin\/sh\ -c/RUN/g" | tac
该命令组合的作用是格式化并反转 docker history 命令的输出,使其看起来类似于Dockerfile中的指令序列。下面是命令的逐步解析:
docker history --format {{.CreatedBy}} --no-trunc=true bitnami/zookeeper:3.7.0-debian-10-r242:
docker history 显示Docker镜像的历史。
--format {{.CreatedBy}} 自定义输出格式,只显示创建每一层的命令。
--no-trunc=true 表示不截断输出,显示完整的创建命令。
bitnami/zookeeper:3.7.0-debian-10-r242 指定要查看历史的Docker镜像及其标签。
sed "s/\/bin\/sh -c #(nop) //g":
使用 sed 流编辑器替换命令输出中的 /bin/sh -c #(nop) 字符串为空,因为这种模式表示Dockerfile中的非运行指令,如 ENV, LABEL 等。
sed "s/\/bin\/sh -c/RUN/g":
再次使用 sed 替换 /bin/sh -c 为 RUN,这是为了模拟Dockerfile中的 RUN 指令。
tac:
tac 命令将文本反转输出,因为 docker history 是按照从最新层到最早层的顺序显示的,而Dockerfile是从基础层开始构建的。所以使用 tac 后输出的顺序就类似于Dockerfile文件的编写顺序。
执行这个命令组合后,你将得到一个看似Dockerfile的命令序列,它反映了构建 bitnami/zookeeper:3.7.0-debian-10-r242 镜像的过程,但是需要注意的是,自动生成的序列可能不是完全可用的Dockerfile,因为某些操作可能不会在 docker history 命令中显示出来,例如复制文件到镜像内。
Docker 查看镜像构建过程 docker history
于 2024-02-18 14:50:56 首次发布