从docker镜像获取dockerfile / docker命令

时间:2014-08-06 21:27:57

标签: docker

是否可以取回为生成给定的docker镜像而运行的docker命令?由于docker文件的每一行都应该映射到单个图层,所以这似乎是可能的,但我在文档中看不到任何内容。

5 个答案:

答案 0 :(得分:4)

docker history <image>

几乎就是这样。

答案 1 :(得分:3)

您可以使用两个泊坞窗命令的组合来实现您的目标:

docker inspect <image>

docker history <image>

或者你可以使用这个很酷的服务来查看生成图像的方式,每个图层都是docker文件中的命令:

https://imagelayers.io/?images=java:latest,golang:latest,node:latest,python:latest,php:latest,ruby:latest

答案 2 :(得分:2)

我想这取决于你从哪里获得图像。

如果是these docker containers of mine from the Docker Hub,您可以使用 this link from the right hand side of the webpage要关注this github repo containing the Dockerfile(s)

我认为没有命令&#34; unassemble&#34;一个容器/图像,并取回制作它的说明。

答案 3 :(得分:2)

  

是否可以取回为生成给定的docker镜像而运行的docker命令?

不,考虑到你有像docker export / docker import这样的命令可以展平图像:

docker export <containerID> | docker import - <imagename>

生成的图像将从容器构建,并且仅包含一个图层。即使docker history也无法提供有关原始图像及其原始容器部分的Dockerfile的线索。

答案 4 :(得分:1)

对于您创建的图像,图像元数据(标签)可用于存储Dockerfile  https://docs.docker.com/engine/userguide/labels-custom-metadata/

这里提出了初步解决方案https://speakerdeck.com/garethr/managing-container-configuration-with-metadata

这种存储Dockerfile的方法效率不高 - 它需要启动容器才能解压缩Dockerfile。

我个人使用不同的方法 - 使用Base64编码Dockerfile并使用外部参数传递此类编码字符串来设置图像标签。这样您就可以使用inspect直接从图像中读取Dockerfile的内容。 您可以在此处找到详细示例:https://gist.github.com/lruslan/3dea3b3d52a66531b2a1