Harbor深度清理:解决空间不足与镜像残留问题
需积分: 25 108 浏览量
更新于2024-08-31
收藏 4.85MB DOCX 举报
"Harbor空间清理涉及到镜像存储机制和垃圾清理过程。在面临Harbor空间不足时,常规的删除镜像操作往往无法完全释放空间。本文档深入探讨了这个问题,并提供了解决方案。"
在Harbor中,当提示空间不足时,通常的API或界面删除操作并不能彻底清理镜像,导致空间无法有效释放。这是因为Harbor的镜像存储机制和垃圾清理过程存在特定的逻辑。
1. Harbor垃圾清理
Harbor使用Docker容器运行,其内部包含一个Registry组件用于存储镜像。在尝试释放空间时,可以使用`docker-compose stop`停止Harbor服务,然后通过`docker run`命令执行垃圾清理。这个命令通常会挂载Registry的卷,并使用`garbage-collect`命令来检查或执行清理。例如:
```
docker run -it --name gc --volumes-from registryvmware/registry-photon:v2.6.2-v1.7.0 garbage-collect --dry-run /etc/registry/config.yml
```
在确认无误后,移除`--dry-run`参数执行实际的清理:
```
docker run -it --name gc --volumes-from goharbor/registry-photon:v2.6.2-v1.7.0 garbage-collect /etc/registry/config.yml
```
完成清理后,使用`docker-compose start`重启Harbor服务。然而,有时即使执行了垃圾清理,空间仍然未能彻底释放。
2. 镜像的存储机制
Harbor中的镜像是由多个层(layer)组成的,每个层代表镜像的一个变更。manifest文件记录了镜像的元数据,包括引用的layer信息。由于layer的复用机制,不同的镜像可能共享相同的layer,以节省存储空间。因此,直接删除layer会导致依赖它的镜像无法正常下载。
3. 垃圾收集(Garbage Collection, GC)
当manifest被删除时,对应的layer若不再被其他镜像引用,则会被视为未引用状态,成为垃圾。registry的GC功能就是用来查找并清理这些未引用的layer。然而,如果GC未能成功清理空间,可能是因为某些原因,如残留的引用信息、未正确执行的清理操作等。
解决这个问题需要深入理解Harbor的存储结构,确保所有不再需要的manifest和layer都被正确地标识和删除。在进行GC时,应密切关注日志信息,以诊断可能存在的问题。此外,定期进行数据库备份和清理策略的设定也是管理Harbor空间的有效方式。
清理Harbor空间不仅涉及简单的镜像删除,还需要理解其底层存储机制,特别是manifest和layer的关系,以及如何正确执行垃圾清理操作。通过深入了解这些概念和流程,我们可以更有效地管理Harbor的存储空间。
2020-04-02 上传
2023-02-21 上传
2020-01-19 上传
2019-10-10 上传
2021-10-13 上传
没葱的葱油饼
- 粉丝: 0
- 资源: 16
最新资源
- IEEE 14总线系统Simulink模型开发指南与案例研究
- STLinkV2.J16.S4固件更新与应用指南
- Java并发处理的实用示例分析
- Linux下简化部署与日志查看的Shell脚本工具
- Maven增量编译技术详解及应用示例
- MyEclipse 2021.5.24a最新版本发布
- Indore探索前端代码库使用指南与开发环境搭建
- 电子技术基础数字部分PPT课件第六版康华光
- MySQL 8.0.25版本可视化安装包详细介绍
- 易语言实现主流搜索引擎快速集成
- 使用asyncio-sse包装器实现服务器事件推送简易指南
- Java高级开发工程师面试要点总结
- R语言项目ClearningData-Proj1的数据处理
- VFP成本费用计算系统源码及论文全面解析
- Qt5与C++打造书籍管理系统教程
- React 应用入门:开发、测试及生产部署教程