如何查看每个 docker 镜像的 Dockerfile?

Lon*_*ner 36 docker dockerfile

我有以下泊坞窗图像。

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
hello-world         latest              48b5124b2768        2 months ago        1.84 kB
docker/whalesay     latest              6b362a9f73eb        22 months ago       247 MB
Run Code Online (Sandbox Code Playgroud)

有没有办法在我的本地系统上查看每个 docker 镜像的 Dockerfile?

哪里可以看到 Dockerfile 的 Docker 映像的答案对我没有帮助,因为它没有完全显示 Dockerfile,而是运行命令来创建图像。我想要 Dockerfile 本身。

Ale*_*vic 37

据我所知,不,你不能。因为 Dockerfile 用于构建映像,所以它不与映像本身打包在一起。这意味着您应该对其进行逆向工程。您可以docker inspect在图像或容器上使用,从而对它的配置方式有一些了解和感受。图像的图层也是可见的,因为您在拉特定图像时拉它们,所以这也不是秘密。

但是,您通常可以在 Dockerhub 上的图像本身的存储库中看到 Dockerfile。我不能说大多数存储库都附加了 Dockerfile,但我看到的大多数存储库都有它。

不同的存储库维护者可能会选择不同的方式来记录 Dockerfile。如果设置了自动构建,您可以在存储库页面上看到 Dockerfile 选项卡。但是当有多个并行版本可用时(比如Ubuntu),维护者通常选择在描述中放置不同版本的 Dockerfile 链接。如果您在这里查看:https : //hub.docker.com/_/ubuntu/,在“支持的标签”下(同样适用于 Ubuntu),您可以看到每个 Ubuntu 版本都有指向多个 Dockerfile 的链接.

  • 请参阅下面@themozel 的回答。现在,您可以使用“docker History”命令来查看镜像是如何构建的。 (14认同)

小智 22

您还可以从图像重新生成 dockerfile 或使用docker history <image name>命令查看里面的内容。\n检查此:链接到答案

\n
\n

TL;DR\n因此,如果您有一个由 dockerfile 构建的 docker 映像,您可以恢复此信息(除了原始 FROM 命令之外的所有信息,这很重要,我\xe2\x80\x99ll 会同意这一点。但您通常可以猜猜看,尤其是进入容器并询问 \xe2\x80\x9c 你是什么操作系统?\xe2\x80\x9d)。然而,图像的制造者可能有你\xe2\x80\x99d永远不知道的手动步骤,而且他们可以只导出图像,然后重新导入它,此时不会有中间图像。

\n
\n

  • 该链接可能会回答该问题,但也可能在将来的某个时候发生变化。因此,请将此处链接文档的相关部分添加到您的答案中,使其持久并可通过搜索找到。谢谢。:) (4认同)

Fai*_*izi 8

一种方法可能是使用文件save中的图像image.tar。接下来提取文件并尝试探索是否可以在任何层目录中找到 Dockerfile。

docker image save -o hello.tar hello-world
Run Code Online (Sandbox Code Playgroud)

这将输出一个hello.tar文件。

hello.tar是压缩的输出图像文件,hello-world是您要保存的图像的名称。

之后,解压压缩文件并浏览图像层目录。您可能会在其中一个目录中找到 Dockerfile。

但是,有一点需要注意,如果构建映像时忽略Dockerfile.dockerignore. 那么你将无法Dockerfile通过这种方法找到。


Jay*_*ala 7

由于镜像是直接从 Dockerhub 下载的,因此只有镜像会从 docker hub 拉入您的机器。如果您想查看 dockerfile,那么您可以转到 docker hub 并以标签格式(例如 ubuntu:14.04)键入镜像名称和版本名称,这将打开镜像以及 Docker 文件的详细信息。还要记住,只有图像的所有者共享了他们的 Dockerfile,您才能看到它。否则不行。大多数官方镜像不会为您提供 Dockerfile。

希望能帮助到你!

  • 如果我访问 https://hub.docker.com/search/?q=ubuntu%3A14.04 我看不到官方 ubuntu:14.04 映像。相反,我看到其他用户创建的 ubuntu 14.04 映像。如何搜索官方 ubuntu:14.04 镜像? (2认同)