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

是否可以从docker容器中提取Dockerfile,docker,Docker,我只是从Docker开始,能够看到用于创建现有Docker图像的DockerFile将非常有用 即使映像是通过手动运行命令,然后提交到标记来构建的,为了学习和安全起见,能够看到映像是如何生成的也是很好的 是否有方法提取用于构建给定docker映像的docker文件或命令列表?您有非常有用的docker历史记录。如果没有任何步骤涉及stdin,那么它甚至可以用来生成dockerfile 如果一个步骤是stdin,那么知道发生了什么的唯一方法就是执行docker日志,但是如果您没有容器,则无法执行。

我只是从Docker开始,能够看到用于创建现有Docker图像的DockerFile将非常有用

即使映像是通过手动运行命令,然后提交到标记来构建的,为了学习和安全起见,能够看到映像是如何生成的也是很好的


是否有方法提取用于构建给定docker映像的docker文件或命令列表?

您有非常有用的
docker历史记录。如果没有任何步骤涉及stdin,那么它甚至可以用来生成dockerfile


如果一个步骤是stdin,那么知道发生了什么的唯一方法就是执行
docker日志
,但是如果您没有容器,则无法执行。

现在有undocker可用。 我们可以使用pip命令安装它

pip install git+https://github.com/larsks/undocker/ 
和使用

docker save IMAGE_NAME | undocker -i -o IMAGE_NAME 
从docker中提取文件

有一个项目可以帮助您直接完成

恢复Dockerfile需要单个CLI命令:

docker run-v/var/run/docker.sock:/var/run/docker.sock centurylink/dockerfile from image


必须已经安装了Docker。

对我不起作用:/usr/lib/ruby/gems/2.2.0/gems/Docker-api-1.24.1/lib/Docker/connection.rb:42:in‘rescue in request’:400错误请求:格式错误的主机头(Docker::Error::ClientError)这能回答您的问题吗@user7610不太可能:)我问这个问题已经很久了。“docker history”在当时还不错,但既然你可以挤压层,我现在的结论是没有完美的方法。使用
docker history--no trunc
,这样你就能看到“一切”。很好
docker history--no trunc--format'RUN{{{.CreatedBy}}}
最适合我。