是否可以从docker容器中提取Dockerfile

mhv*_*und 30 docker

我刚开始使用Docker,能够看到用于创建现有docker镜像的Dockerfiles非常有用.

即使图像是通过手动运行命令构建的,然后提交到标签,最好能够看到图像的制作方式,既可用于学习目的,也可用于安全性.

有没有办法提取Dockerfile或用于构建给定docker镜像的命令列表?

cre*_*ack 33

你有docker history <image>这个非常有帮助.如果没有涉及stdin的步骤,它甚至可以用于生成dockerfile.

如果一个步骤作为stdin,唯一的方法就是知道发生了什么docker logs <container id parent>,但如果你没有容器,你就不能.

  • 使用`docker History --no-trunc`,这样你就可以看到“一切”。 (3认同)
  • 好的。`docker History --no-trunc --format 'RUN {{.CreatedBy}}' &lt;image&gt;` 对我来说是最好的。 (2认同)

Din*_*esh 14

现在有可用的脱离器.我们可以使用pip命令安装它.

pip install git+https://github.com/larsks/undocker/ 
Run Code Online (Sandbox Code Playgroud)

并使用

docker save IMAGE_NAME | undocker -i -o IMAGE_NAME 
Run Code Online (Sandbox Code Playgroud)

从docker中提取文件.

https://github.com/larsks/undocker/

  • 这个工具似乎没有做所要求的事情,即如何重新创建 Dockerfile。它从 Docker 容器中解压文件。 (2认同)