我有以下 docker 镜像。
$ 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
有没有办法可以查看本地系统上每个 docker 镜像的 Dockerfile?
在哪里查看 Docker 镜像的 Dockerfile? 的答案对我没有帮助,因为它没有准确显示 Dockerfile,但运行命令来创建镜像。我想要 Dockerfile 本身。
据我所知,不,你不能。由于 Dockerfile 用于构建镜像,因此它不与镜像本身打包在一起。这意味着您应该对其进行逆向工程。您可以在图像或容器上使用
docker inspect
,从而了解其配置方式。图像的图层也是可见的,因为您在拉取特定图像时拉动它们,所以这也不是秘密。
但是,您通常可以在 Dockerhub 上的镜像存储库中看到 Dockerfile。我不能说大多数存储库都附加了 Dockerfile,但我看到的大多数存储库都附带了它。 不同的存储库维护者可能会选择不同的方式来记录 Dockerfile。如果设置了自动构建,您可以在存储库页面上看到 Dockerfile 选项卡。但是,当有多个并行版本可用时(例如
Ubuntu),维护者通常选择在描述中放置不同版本的 Dockerfile 链接。如果你看一下这里:https://hub.docker.com/_/ubuntu/,在“支持的标签”下(同样,对于 Ubuntu),你可以看到有指向多个 Dockerfile 的链接,每个 Dockerfile 都有各自的链接。 Ubuntu 版本。
希望有帮助!
save
将图像放入
image.tar
文件中。接下来提取文件并尝试探索是否可以在任何层目录中找到 Dockerfile。docker image save -o hello.tar hello-world
这将输出一个
hello.tar
文件。
hello.tar
是压缩的输出图像文件,
hello-world
是您要保存的图像的名称。之后,解压压缩文件并浏览图像层目录。您可能会在其中一个目录中找到 Dockerfile。
但是,有一点需要注意,如果构建图像时忽略了
Dockerfile
中的
.dockerignore
。那么通过这种方法你将找不到Dockerfile
。