从Docker镜像中获取Dockerfile / Docker命令

5

是否可以获取生成给定Docker镜像的Docker命令?由于每行Docker文件应该映射到单个层,因此似乎这是可能的,但是我在文档中没有找到任何内容。

5个回答

4
docker history <image>

基本上就是这样。

3

是否可以获取生成给定docker镜像的docker命令?

不行,因为你有docker export / docker import这样的命令,它允许压缩一个镜像:

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

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

一个工具(在容器内部)追踪bash历史记录+配置文件/数据库的更改,你觉得怎么样? - bartimar
好的,但是这些元数据放在哪里?如何以持久化的方式将其与从这些命令构建的图像关联起来? - VonC
@bartimar,对于一个导入的扁平化镜像进行 docker inspect 操作,并不能提供有关该镜像是如何构建的信息。 - VonC

3

2

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接