从docker镜像获取dockerfile / docker命令

是否有可能找回运行产生给定的docker图像的docker命令? 由于docker文件的每一行都应该映射到一个单独的图层,看来这是可能的,但是我没有在文档中看到任何东西。

docker history <image> 

几乎没有。

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

对于Docker Hub中的这些Docker容器,你可以使用这个链接从网页的右边到这个包含Dockerfile的github仓库 。

我不认为有一个“卸载”容器/图像的命令,并取回它的指示。

是否有可能找回运行产生给定的docker图像的docker命令?

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

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

生成的图像将从一个容器构build,并且只包含一个图层。 即使是docker history也不能提供关于原始图像及其原始容器的一部分的Dockerfile的线索。

你可以使用两个docker命令的组合来实现你想要的:

 docker inspect <image> 

 docker history <image> 

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

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

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

初步的解决scheme在这里提出https://speakerdeck.com/garethr/managing-container-configuration-with-metadata

这种存储Dockerfile的方法效率不高 – 它需要启动容器才能提取Dockerfile。

我个人使用不同的方法 – 用Base64编码Dockerfile,并使用外部parameter passing这样的编码string来设置图像标签。 这样你可以直接从图像中使用inspect来读取Dockerfile的内容。 你可以在这里find详细的例子: https : //gist.github.com/lruslan/3dea3b3d52a66531b2a1