当您创建自己的泊坞窗图像时,通常会使用FROM启动Docker文件,并将图像基于docker hub上已存在的图像。我怎样才能更多地了解我所引用的图像中的实际内容?
例如,我有兴趣从这张图片开始: https://hub.docker.com/_/swift/
除了该网页上的说明字段中列出的内容之外,我该如何验证实际安装的内容?有没有办法在docker hub上查看现有映像的Dockerfile?
由于
答案 0 :(得分:2)
许多图片,尤其是“官方”图片,都将包含Dockerfile链接。您可以在Docker Hub的说明中找到它们。例如,现在您在问题中发布的链接中,您会找到一些图像标记和几个指向Dockerfile的链接。
3.1.0, 3.1, 3, latest (Dockerfile)
只需点击“Dockerfile”,它就会转到用于构建该版本图像的Dockerfile。
应该注意,这是与Docker Hub帐户关联的元数据。你不能完全相信它是正确的,因为它只是一个链接。 (对于GitHub,在这种情况下,它可以在任何地方。)
既然你不能完全相信它,你可能也想看......
如果您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命令,如ARG
,CMD
,ADD
,COPY
等。
由于它被编码到图像层中,因此它可能比Docker Hub自述文件中的Dockerfile链接更可靠(如果可读性更低)。