我正在检查几个容器映像,以满足我的项目的网络安全合规性。一些 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
任何人都可以帮助解释或向我指出文档,以说明为什么图像在解压缩时看起来如此不同吗?
第一个带有layer.tar的文件是docker归档镜像。 第二个 blobs/sha256 是 OCI 图像。 https://snyk.io/blog/container-image-formats/