本文档介绍了 Dive 如何直接从 tar 文件处理 Docker 镜像归档。Docker 归档文件处理使 Dive 能够在不需要运行 Docker 守护进程的情况下分析 Docker 镜像。有关与 Docker 引擎 API 交互的信息,请参阅 Docker Engine Integration。
Docker 归档文件处理允许 Dive 分析以 .tar 格式存储的 Docker 镜像,此类文件可以使用 docker save 等命令创建。此功能对于离线分析或在 Docker 守护进程不可用的环境中分析镜像特别有用。
来源: dive/image/docker/image_archive.go21-301
Docker 归档文件(通过 docker save 创建)是一个 tar 文件,其中包含:
对于 OCI 兼容格式(自 Docker 25 起使用),结构略有不同,内容组织在 blobs/ 目录下,并且可能不存在 manifest.json。
来源: dive/image/docker/image_archive.go162-195
ImageArchive 结构是 Docker 归档文件处理的核心组件
来源: dive/image/docker/image_archive.go21-25
Docker 归档文件处理遵循以下主要步骤:
来源: dive/image/docker/image_archive.go27-198 dive/image/docker/image_archive.go250-301
Docker 归档文件中的层被处理以提取文件信息和构建文件树
来源: dive/image/docker/image_archive.go200-219 dive/image/docker/image_archive.go111-144
Dive 支持多种 Docker 镜像格式
来源: dive/image/docker/image_archive.go55-70 dive/image/docker/image_archive.go91-158 dive/image/docker/image_archive.go163-188
处理完归档文件后,ToImage 方法将 ImageArchive 转换为 Dive 的统一 Image 结构进行分析
来源: dive/image/docker/image_archive.go250-301
Docker 归档文件处理器从镜像配置中提取层历史信息,用于计算层效率统计数据
来源: dive/image/docker/image_archive.go270-293 dive/image/docker/image_archive_analysis_test.go1-43
Docker 归档文件处理器还包含从镜像归档中提取特定文件的函数
来源: dive/image/docker/image_archive.go303-378
Docker 归档文件处理器通过提供除 Docker 和 Podman 引擎之外的替代镜像源,融入了 Dive 的整体架构中
来源: dive/image/docker/image_archive.go250-301
Dive 中的 Docker 归档文件处理系统支持直接从 tar 文件分析 Docker 镜像,而无需 Docker 守护进程。它支持多种镜像格式,包括传统的 Docker 格式和 OCI 格式,以及各种压缩方案。ImageArchive 组件通过提取层、读取元数据和构建可用于效率分析的文件树来处理这些归档文件。
刷新此 Wiki
最后索引时间2025 年 4 月 18 日(788fcd)