我刚开始学习Docker,能够查看用于创建现有Docker镜像的Dockerfiles将非常有帮助。
即使该镜像是通过手动运行命令,然后提交到标签中构建的,也很好能够查看镜像的制作方式,既可以用于学习目的,也可以用于安全性考虑。
是否有一种方法可以提取一个Dockerfile或列出用于构建给定Docker镜像的命令?
编辑(2021年11月):由于人们仍在投票,因此根据答案和评论,我选择了:
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,所以如果你需要它,并且找不到源代码,或许可以跳过这个镜像。