Docker HUB Harbor 背后的镜像怎么存储的?存到哪里了?文件数据结构 底层存放方式
Docker HUB Harbor 背后的镜像怎么存储的?存到哪里了?文件数据结构 底层存放方式
Docker Hub 和 Harbor 的镜像存储方式,可以理解为仓库端(Server Side)和客户端(Client Side)的统一。它们的核心逻辑都遵循OCI(Open Container Initiative)开放容器标准,确保跨平台兼容,但在具体的实现和文件存放位置上各有侧重。
简单来说,Docker Hub 是云端的“超级仓库”,Harbor 是私有的“本地仓储”,而你的 Docker 引擎则是保管“本地家当”的抽屉。
文章目录
- Docker HUB Harbor 背后的镜像怎么存储的?存到哪里了?文件数据结构 底层存放方式
- 📚 核心概念:镜像 = 元数据 + 只读层 + 内容摘要
- 💻 客户端本地存储:Docker Daemon 的管理
- ☁️ Harbor 企业级生产存储架构
- 💎 总结:镜像存储逻辑全景图
- 💡 如何查看自己机器上的文件结构
- 🚀 方案一:Harbor 代理缓存 (Proxy Cache) —— “拉取即缓存”
- 🤖 方案二:Harbor 复制规则 (Replication) —— “定时批量同步”
- 🛠️ 方案三:Skopeo 手动批量同步 —— “脚本实现灵活同步”
- 💎 总结与建议
📚 核心概念:镜像 = 元数据 + 只读层 + 内容摘要
一个镜像在底层可以被拆解为两个主要部分:
- 镜像元数据 (Metadata):描述镜像“是什么”的JSON文件,如环境变量、暴露端口、构建历史,以及最重要的层文件清单 (Manifest)。
- 只读层 (Read-Only Layers):镜像实际的“内容”,是 Dockerfile 中每条指令(如
RUN、COPY)生成的一个只读文件系统,层与层之间通过父层指针关联,形成一个堆叠的链条。
此外,整个系统通过内容可寻址 (Content-Addressable Storage, CAS)机制运行:每一层内容都通过SHA256哈希值作为唯一ID来标识和寻址。这实现了一个关键优化:当不同镜像共享相同的基础层时(例如多个应用都基于ubuntu:22.04),它们在仓库中就只保存这一份数据,极大节省了存储空间,也提升了传输效率。
💻 客户端本地存储:Docker Daemon 的管理
当你执行docker pull后,镜像文件会存储在 Docker Daemon 管理的目录下,默认根目录是/var/lib/docker
