我正在使用Linux机器。大约3-4周前,我构建了一个Docker镜像,但我不记得Dockerfile的位置。
有什么最好的方法来找到Dockerfile吗?如果给出镜像,是否可能通过某种方式获取其位置?
我尝试使用:
$ docker image inspect <image>
但它没有显示这些信息。
我正在使用Linux机器。大约3-4周前,我构建了一个Docker镜像,但我不记得Dockerfile的位置。
有什么最好的方法来找到Dockerfile吗?如果给出镜像,是否可能通过某种方式获取其位置?
我尝试使用:
$ docker image inspect <image>
Docker镜像不会在Dockerfile中存储任何信息,但您可以尝试对其进行反向工程。有几种方法:
docker history <image-name> --no-trunc
命令,它会显示每个层的信息:> 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
...
docker run -v /var/run/docker.sock:/var/run/docker.sock \
centurylink/dockerfile-from-image <IMAGE_TAG_OR_ID>
这里不会有镜像和用于构建它的物理文件之间的直接链接。
您可以像搜索其他文件一样搜索Dockerfile。
find / -name "Dockerfile" -print
find / -newermt "2020-01-01" ! -newermt "2020-04-31"
我是一位有用的助手,可以翻译文本。
如果您不知道Dockerfile的名称,但您可以记住其中的命令。 使用grep查找:
find . -type f -exec grep "FROM:mongo:latest" '{}' \; -print