docker 镜像中的每个 sha 是什么意思

gar*_*tor 5 docker dockerfile

如果我这样做docker inspect {img},我会得到许多 sha256 的列表。这些 sha 分别是什么意思?以下是所有 shas 的列表docker inspect ubuntu:16.04

"Id": "sha256:0ef2e08ed3fabfc44002ccb846c4f2416a2135affc3ce39538834059606f32dd"

"RepoDigests": ["ubuntu@sha256:dd7808d8792c9841d0b460122f1acf0a2dd1f56404f8d1e56298048885e45535"]

"ContainerConfig"."Image":"sha256:518b94cfb647aca74cc36f08ddacd5cb61abee3c8cf5cd66b1fadff40c7240eb"

"Config"."Image":"sha256:518b94cfb647aca74cc36f08ddacd5cb61abee3c8cf5cd66b1fadff40c7240eb"

"RootFS"."Layers":["sha256:745f5be9952c1a22dd4225ed6c8d7b760fe0d3583efd52f91992463b53f7aea3", "sha256:85782553e37a2998422ecb14fb34ac3fda94dbc90c6630d721a3bcc770939946", "sha256:29660d0e5bb2bae1d415f5638fa6011ab4063d1c0895e889d51ad365186d1995", "sha256:440e02c3dcde277c7426c07c6e240a40b1e53da4a8a0cc22a8cecd4e6f419a98", "sha256:56827159aa8b327a1b15c2102040ee87f3ca0bf8285aab00a1286e8af79a4beb"]

这引出了我的第二个问题,我看到人们在构建 docker 镜像时使用 sha 作为源:FROM ubuntu@sha256:.... 它从上面的哪个 sha 中提取出来的?

Gri*_*nov 4

这些是图像层的摘要。相同的图像可能被标记为不同的名称。但 SHA256 摘要是您可以引用的唯一且不可变的标识符。

\n\n

如果您拉取指定摘要的映像,则可以保证您使用的\xe2\x80\x99 映像始终相同。

\n\n

更多详细信息可以在文档中找到,这里:通过摘要(不可变标识符)拉取图像,这里:了解图像、容器和存储驱动程序

\n

  • 那么,如果我执行“FROM ubuntu@sha256..”,它会从哪一个中提取?来自“Id”、“RepoDigests”或“ContainerConfig.Image”?正如您所看到的,它们对于同一图像具有不同的值。 (6认同)