【发布时间】:2014-08-13 04:14:03
【问题描述】:
我刚刚开始使用 Docker,如果能够查看用于创建现有 Docker 映像的 Dockerfile,将会非常有帮助。
即使图像是通过手动运行命令然后提交到标签来构建的,也很高兴能够看到图像是如何制作的,无论是出于学习目的还是出于安全考虑。
有没有办法提取 Dockerfile 或用于构建给定 Docker 映像的命令列表?
编辑(2021 年 11 月):由于人们仍在对此表示赞同,我可以说,根据答案和 cmets,我决定:
docker history --no-trunc --format '{{.CreatedBy}}' <image> | grep -v '#(nop)' | tac
它生成的输出很容易放入 Dockerfile。示例:
$ docker history --no-trunc --format '{{.CreatedBy}}' qemu | grep -v '#(nop)' | tac
ENV DEBIAN_FRONTEND=noninteractive
RUN /bin/sh -c apt-get update && apt-get -y upgrade # buildkit
RUN /bin/sh -c apt install -y qemu-system-arm gcc-arm-none-eabi build-essential cmake bison flex # buildkit
RUN /bin/sh -c useradd --create-home qemu # buildkit
WORKDIR /home/qemu
USER qemu
COPY baremetal-arm baremetal-arm # buildkit
但正如我也写的,我不认为有提取Dockerfile的好方法,所以如果你需要它,并且找不到源代码,也许可以给图像一个通过。
【问题讨论】:
-
这能回答你的问题吗? How to generate a Dockerfile from an image?
-
@user7610 不是真的 :) 自从我问这个问题以来,我已经走了很长一段路。 “docker history”当时还不错,但既然你可以压缩层,我现在的结论是没有完美的方法来做到这一点。
标签: docker