为什么有些 docker 镜像有二进制 blob 层,而有些镜像有layer.tar 文件?

问题描述 投票:0回答:1

我正在检查几个容器映像,以满足我的项目的网络安全合规性。一些 docker 容器镜像的层如下所示:

.
├── 002dd465768a1e98e3ed60c93a146544b126c08c9698ec21e5c2278cdc0da9b2
│   ├── VERSION
│   ├── json
│   └── layer.tar
├── 0fe7348ffe3808506392a882b1a169e31b567b0ea6a74030fca23d122666bd2b
│   ├── VERSION
│   ├── json
│   └── layer.tar
├── 1fb1a002b9e7b38da24e7382886b35027836caf8e51dc7f3b2561ef02d4a77a3.json
├── manifest.json
└── repositories

我可以解压每层中的layer.tar文件并查看文件系统内容。这很好,因为它使我可以轻松地向网络人员解释图像中包含的内容。

但是,其他容器镜像看起来像这样:

.
├── blobs
│   └── sha256
│       ├── 05f925e80df95fd593f4294e1a1b37a8e3a46de297ff47530a3fe7594cd41e24
│       ├── 070bff1412567be65814c47fde966b864de43ab541075bcdcf66135ecde7d916
│       
├── index.json
├── manifest.json
├── oci-layout
└── repositories

每一层都是一个二进制 blob 文件,我无法轻松检查并向网络人员展示内容。

为什么两个容器镜像不同?我使用相同版本的 docker(Docker 版本 25.0.2,构建 29cf629)构建了这两个映像,没有额外的选项,只是:

docker build -t image_name:image_tag ./

然后我将图像保存到 tar 文件中以将其发送给网络安全人员:

docker save image_name:image_tag > image_name.tar

任何人都可以帮助解释或向我指出文档,以说明为什么图像在解压缩时看起来如此不同吗?

docker image dockerfile containers
1个回答
0
投票

第一个带有layer.tar的文件是docker归档镜像。 第二个 blobs/sha256 是 OCI 图像。 https://snyk.io/blog/container-image-formats/

© www.soinside.com 2019 - 2024. All rights reserved.