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

有以下 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?

这篇文章 Where to see the Dockerfile for a docker image? 对我没有帮助,因为它没有完整显示 Dockerfile,而是运行命令来创建镜像。我想要 Dockerfile 本身。

原文由 Lone Learner 发布,翻译遵循 CC BY-SA 4.0 许可协议
阅读 11.8k
2 个回答

据我所知,不能。

因为 Dockerfile 用于构建镜像,所以它不与镜像本身打包。这意味着您应该对其进行逆向工程。您可以在镜像或容器上使用 docker inspect,从而了解它的配置方式。镜像的 layers 也是可见的,因为当你拉特定的镜像时才拉它们,所以这也不是什么秘密。

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

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

原文由 Aleksandar Stojadinovic 发布,翻译遵循 CC BY-SA 3.0 许可协议

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

希望能帮助到你!

原文由 Jayabalan Bala 发布,翻译遵循 CC BY-SA 3.0 许可协议
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题