首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >定位给定图像的Dockerfile

定位给定图像的Dockerfile
EN

Stack Overflow用户
提问于 2020-04-23 15:11:15
回答 2查看 461关注 0票数 3

我在做一台Linux机器。我在3-4周前建立了一个码头形象,但我不记得Dockerfile在哪里。

找到Dockerfile的最佳方法是什么?有可能以某种方式得到它的位置给出图像吗?

我试着用:

代码语言:javascript
复制
$ docker image inspect <image>

但它并没有显示这些信息。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-04-23 15:29:57

Docker图像不存储Dockerfile上的任何信息,但是您可以尝试反向工程它。实现这一目标的方法很少:

  1. 使用docker history <image-name> --no-trunc,它将在每个层上显示信息:
代码语言:javascript
复制
> docker history golang:1.14.2-alpine3.11  --no-trunc --format="{{.CreatedBy}}"
/bin/sh -c #(nop) WORKDIR /go
/bin/sh -c mkdir -p "$GOPATH/src" "$GOPATH/bin" && chmod -R 777 "$GOPATH"
/bin/sh -c #(nop)  ENV PATH=/go/bin:/usr/local/go/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
/bin/sh -c #(nop)  ENV GOPATH=/go
...
  1. https://github.com/CenturyLinkLabs/dockerfile-from-image --从码头图像逆向工程码头文件的项目。你可以这样运行:
代码语言:javascript
复制
docker run -v /var/run/docker.sock:/var/run/docker.sock \
  centurylink/dockerfile-from-image <IMAGE_TAG_OR_ID>
  1. 潜水实际上是调试/优化坞映像的工具,但在这种情况下可能会有所帮助。
票数 4
EN

Stack Overflow用户

发布于 2020-04-23 15:32:53

在图像和用于构建它的物理文件之间不会有直接的链接。

您可以尝试搜索dockerfile,就好像它是任何其他文件一样。

代码语言:javascript
复制
find / -name "Dockerfile" -print

例如。

如果您或多或少知道Dockerfile上次编辑的时间:

代码语言:javascript
复制
find / -newermt "2020-01-01" ! -newermt "2020-04-31"

等。

如果您不知道dockerfile是什么,但是您可以记住其中的一个命令。查找作为grep:

代码语言:javascript
复制
find . -type f -exec grep "FROM:mongo:latest" '{}' \; -print

这都是标准的查找材料,特别是与码头无关。

现在让我们假设这仍然不适用于您,或者您有1000 s如果返回的dockerfile和匹配正确的一个与您的图像仍然是有问题的。

您可以尝试从图像中重建dockerfile。这个答案:https://stackoverflow.com/a/30793515/7281447

这个答案:https://stackoverflow.com/a/33918866/7281447

或者这个答案:https://stackoverflow.com/a/30793515/7281447

描述一下这样做的方法。但你是“逆向工程”的码头文件从图像。也就是说,有些信息可能过于冗长或完全丢失。它不会产生清洁,(好评论!)首先,您用来创建图像的dockerfile。

但是,现在您有了用于生成图像的历史命令列表。您可以尝试从这个列表中选择独特的命令,并将它们插入到find w/ grep命令中。我首先从最新的命令开始,因为您不太可能查看那些在FROM映像中生成的命令(如果您的工具无法区分它们)。

编辑:当问题声明他们不知道文件的位置,答案假设它仍然在某个文件系统中,或者在一组已知的文件系统中。我想不一定是这样的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61390606

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档