你怎么知道当你拉取一个现有的 Docker 镜像时你得到了什么?



创建自己的docker映像时,通常会从中启动一个docker文件,然后将图像基于Docker Hub上已经存在的东西。我如何了解我所引用的图像中实际是什么?

例如,我有兴趣从此图像开始:https://hub.docker.com/__/swift/

此外,该网页上的描述字段中列出了什么,我如何验证实际安装的内容?有没有办法查看Docker Hub上现有图像的Dockerfile?

谢谢

dockerfile链接

许多图像,尤其是"官方"图像,将包含Dockerfile链接。您会在Docker Hub上的描述中找到它们。例如,现在在您的问题中发布的链接上,您会发现一些图像标签和几个Dockerfile的链接。

3.1.0, 3.1, 3, latest (Dockerfile)

只需单击" Dockerfile",它将带您到用于构建图像的版本的Dockerfile。

应注意,这是与Docker Hub帐户关联的元数据。您不能完全相信它是正确的,因为它只是一个链接。(在这种情况下,到Github,但可以在任何地方。(

由于您不能完全相信这一点,因此您可能还想查看...

docker历史

如果docker pull swift获取图像,则可以使用docker history命令仔细查看它。目前,看起来像这样:

IMAGE               CREATED             CREATED BY                                      SIZE                COMMENT
d505ae70cb39        2 weeks ago         /bin/sh -c swift --version                      0B
<missing>           2 weeks ago         /bin/sh -c SWIFT_URL=https://swift.org/bui...   403MB
<missing>           2 weeks ago         /bin/sh -c #(nop)  ENV SWIFT_PLATFORM=ubun...   0B
<missing>           2 weeks ago         /bin/sh -c #(nop)  ARG SWIFT_VERSION=swift...   0B
<missing>           2 weeks ago         /bin/sh -c #(nop)  ARG SWIFT_BRANCH=swift-...   0B
<missing>           2 weeks ago         /bin/sh -c #(nop)  ARG SWIFT_PLATFORM=ubun...   0B
<missing>           2 weeks ago         /bin/sh -c apt-get -q update &&     apt-ge...   626MB
<missing>           2 weeks ago         /bin/sh -c #(nop)  MAINTAINER Haris Amin <...   0B
<missing>           2 weeks ago         /bin/sh -c #(nop)  CMD ["/bin/bash"]            0B
<missing>           2 weeks ago         /bin/sh -c mkdir -p /run/systemd && echo '...   7B
<missing>           2 weeks ago         /bin/sh -c sed -i 's/^#s*(deb.*universe...   2.76kB
<missing>           2 weeks ago         /bin/sh -c rm -rf /var/lib/apt/lists/*          0B
<missing>           2 weeks ago         /bin/sh -c set -xe   && echo '#!/bin/sh' >...   745B
<missing>           2 weeks ago         /bin/sh -c #(nop) ADD file:5aff8c59a707833...   118MB

您会注意到,用于构建图像的每一层的命令都被截断以显示。这使此显示并不是特别有用,但是您可以使用--no-trunc标志来获得更多的详细输出。

docker history --no-trunc swift:latest

那么您将获得很多输出(比我在这里粘贴的要多(,但这是一个单输入的样本:

<missing> 2 weeks ago /bin/sh -c SWIFT_URL=https://swift.org/builds/$SWIFT_BRANCH/$(echo "$SWIFT_PLATFORM" | tr -d .)/$SWIFT_VERSION/$SWIFT_VERSION-$SWIFT_PLATFORM.tar.gz && curl -fSsL $SWIFT_URL -o swift.tar.gz && curl -fSsL $SWIFT_URL.sig -o swift.tar.gz.sig && export GNUPGHOME="$(mktemp -d)" && set -e; for key in 7463A81A4B2EEA1B551FFBCFD441C977412B37AD 1BE1E29A084CB305F397D62A9F597F4D21A56D5F A3BAFD3556A59079C06894BD63BC1CFE91D306C6 ; do gpg --quiet --keyserver ha.pool.sks-keyservers.net --recv-keys "$key"; done && gpg --batch --verify --quiet swift.tar.gz.sig swift.tar.gz && tar -xzf swift.tar.gz --directory / --strip-components=1 && rm -r "$GNUPGHOME" swift.tar.gz.sig swift.tar.gz 403MB

大多数文本只是由Dockerfile RUN语句执行的命令。您还将看到其他Dockerfile命令,例如ARGCMDADDCOPY

由于将其编码到图像层中,因此它可能比Docker Hub Readme文件中的Dockerfile链接更可靠(如果读取较低(。

最新更新