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 的链接.
小智 22
您还可以从图像重新生成 dockerfile 或使用docker history <image name>命令查看里面的内容。\n检查此:链接到答案
\n\nTL;DR\n因此,如果您有一个由 dockerfile 构建的 docker 映像,您可以恢复此信息(除了原始 FROM 命令之外的所有信息,这很重要,我\xe2\x80\x99ll 会同意这一点。但您通常可以猜猜看,尤其是进入容器并询问 \xe2\x80\x9c 你是什么操作系统?\xe2\x80\x9d)。然而,图像的制造者可能有你\xe2\x80\x99d永远不知道的手动步骤,而且他们可以只导出图像,然后重新导入它,此时不会有中间图像。
\n
一种方法可能是使用文件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通过这种方法找到。
由于镜像是直接从 Dockerhub 下载的,因此只有镜像会从 docker hub 拉入您的机器。如果您想查看 dockerfile,那么您可以转到 docker hub 并以标签格式(例如 ubuntu:14.04)键入镜像名称和版本名称,这将打开镜像以及 Docker 文件的详细信息。还要记住,只有图像的所有者共享了他们的 Dockerfile,您才能看到它。否则不行。大多数官方镜像不会为您提供 Dockerfile。
希望能帮助到你!
| 归档时间: |
|
| 查看次数: |
35893 次 |
| 最近记录: |