宁夏建设工程招标投标信息网站网站建设需要租赁服务器吗

张小明 2026/1/7 11:20:04
宁夏建设工程招标投标信息网站,网站建设需要租赁服务器吗,seo是啥职位,wordpress的修订1 背景#xff1a;为何需要定期清理Harbor镜像在多项目开发环境中#xff0c;随着持续集成/持续部署#xff08;CI/CD#xff09;流程的不断运行#xff0c;Jenkins等工具会频繁地向Harbor镜像仓库推送新构建的镜像。久而久之#xff0c;仓库中会积累大量历史镜像版本为何需要定期清理Harbor镜像在多项目开发环境中随着持续集成/持续部署CI/CD流程的不断运行Jenkins等工具会频繁地向Harbor镜像仓库推送新构建的镜像。久而久之仓库中会积累大量历史镜像版本导致虚拟机磁盘空间迅速耗尽。这些僵尸镜像不仅占用宝贵的存储资源还可能增加安全风险和管理复杂度。根据实践经验一个中等规模的开发团队每周可能产生数十甚至上百个新镜像。如果没有有效的清理策略Harbor存储占用呈指数级增长只是时间问题。更糟糕的是单纯删除镜像并不立即释放物理空间——这是许多管理员常遇到的误区。本文将详细介绍两种有效清理半年前镜像的方法Harbor原生保留策略和API脚本清理方案并解释最终释放磁盘空间的关键步骤。回到顶部2 清理原理Harbor的两级删除机制Harbor采用两级删除机制理解这一点对有效管理存储空间至关重要软删除标记删除当我们通过界面或API删除镜像标签时Harbor只是移除了镜像的元数据引用并未真正删除底层的物理文件blobs。这就是为什么删除镜像后磁盘空间似乎没有变化。硬删除物理删除需要通过垃圾回收Garbage Collection, GC 过程来实现。GC会清理那些不再被任何镜像引用的底层数据块从而真正释放磁盘空间。官方推荐UI配置高度定制化API操作关键步骤垃圾回收 GC安排维护窗口GC期间仓库只读执行垃圾回收命令真正释放物理磁盘空间方案二通过 Harbor API 编写脚本认证获取 Token筛选创建时间早于半年的标签调用 API 删除旧标签方案一通过 Harbor UI 配置保留策略创建保留规则设置保留最近180天镜像设置定时执行或手动运行Harbor 磁盘空间不足选择清理方式磁盘空间得到释放回到顶部3 方法一使用Harbor原生保留策略推荐UI操作Harbor自v2.4版本起提供了强大的保留策略(Retention Policy)功能这是清理旧镜像的最简便方法。3.1 配置步骤登录Harbor控制台进入需要清理的项目点击策略选项卡 - 添加规则配置保留规则规则名称例如清理半年前镜像匹配仓库可使用**匹配所有仓库或指定特定仓库保留策略选择保留最近多少天被推送过的设置天数为180天约半年标签过滤可根据需要设置标签匹配模式如release-*删除未打标签的镜像建议启用以清理无标签的中间层镜像设置执行频率如每周一次点击模拟运行预览将被清理的镜像确认无误后立即执行3.2 优势与注意事项优势官方支持、配置简单、可定时自动运行、提供模拟运行功能降低风险注意事项保留策略基于保留最近推送的镜像逻辑而非直接按时间点删除需要Harbor v2.4版本支持执行后仍需运行垃圾回收才能释放物理空间回到顶部4 方法二使用API脚本精确删除对于需要更复杂清理逻辑或使用旧版Harbor的情况可通过API脚本实现精确控制。4.1 Python脚本示例以下Python脚本示例演示了如何删除指定项目中所有早于半年的镜像标签import requestsfrom datetime import datetime, timedelta# Harbor配置HARBOR_URL https://your-harbor.comUSERNAME adminPASSWORD your-passwordPROJECT_NAME your-project# 计算半年前时间点six_months_ago datetime.now() - timedelta(days180)# 获取认证tokendef get_token():login_url f{HARBOR_URL}/c/loginresp requests.post(login_url, json{principal: USERNAME,password: PASSWORD}, verifyFalse)return resp.headers.get(Authorization)# 获取项目中的所有仓库def get_repositories(project):headers {Authorization: get_token()}repos_url f{HARBOR_URL}/api/v2.0/projects/{project}/repositoriesresp requests.get(repos_url, headersheaders, verifyFalse)return [repo[name] for repo in resp.json()]# 获取仓库的所有标签及其创建时间def get_tags(repository):headers {Authorization: get_token()}tags_url f{HARBOR_URL}/api/v2.0/{repository}/tagsresp requests.get(tags_url, headersheaders, verifyFalse)return [(tag[name], datetime.strptime(tag[push_time], %Y-%m-%dT%H:%M:%S.%fZ))for tag in resp.json()]# 删除早于指定时间的标签def delete_old_tags():for repo in get_repositories(PROJECT_NAME):tags get_tags(repo)for tag_name, push_time in tags:if push_time six_months_ago:delete_url f{HARBOR_URL}/api/v2.0/{repo}/tags/{tag_name}requests.delete(delete_url, headers{Authorization: get_token()}, verifyFalse)print(fDeleted: {repo}:{tag_name})if __name__ __main__:delete_old_tags()4.2 Shell脚本方案Alternatively也可以使用Shell脚本实现类似功能#!/bin/bashHARBOR_URLhttps://your-harbor.comUSERNAMEadminPASSWORDpasswordPROJECTyour-project# 获取tokenTOKEN$(curl -s -k -X POST -H Content-Type: application/json \-d {\principal\: \$USERNAME\, \password\: \$PASSWORD\} \$HARBOR_URL/c/login | grep -o token:[^]* | cut -d -f4)# 获取项目中的仓库列表REPOS$(curl -s -k -X GET -H Authorization: Bearer $TOKEN \$HARBOR_URL/api/v2.0/projects/$PROJECT/repositories | jq -r .[].name)for REPO in $REPOS; do# 获取仓库的标签列表TAGS$(curl -s -k -X GET -H Authorization: Bearer $TOKEN \$HARBOR_URL/api/v2.0/$REPO/tags | jq -r .[] | [.name, .push_time] | tsv)while IFS$\t read -r TAG PUSH_TIME; do# 转换时间格式并比较PTIME$(date -d $PUSH_TIME %s)SIX_MONTHS_AGO$(date -d 6 months ago %s)if [ $PTIME -lt $SIX_MONTHS_AGO ]; then# 删除旧标签curl -s -k -X DELETE -H Authorization: Bearer $TOKEN \$HARBOR_URL/api/v2.0/$REPO/tags/$TAGecho Deleted: $REPO:$TAGfidone $TAGSdone4.3 API方法的优缺点优点灵活性强可精确控制删除条件适合批量操作缺点需要编程知识存在一定风险需谨慎测试回到顶部5 关键步骤运行垃圾回收释放物理空间无论采用哪种方法删除镜像都必须执行此步骤才能真正释放磁盘空间。5.1 执行垃圾回收安排维护窗口GC期间Harbor将进入只读模式需提前通知团队执行GC命令# 进入Harbor安装目录cd /path/to/harbor# 首先进行试运行不实际删除docker-compose exec -T registry garbage-collect --dry-run /etc/registry/config.yml# 确认无误后正式执行docker-compose exec -T registry garbage-collect /etc/registry/config.yml监控执行结果GC完成后查看释放的存储空间大小5.2 新版Harbor的在线GCHarbor v2.0支持在线垃圾回收可通过UI操作以管理员身份登录进入系统管理 - 垃圾清理点击立即清理或设置定时任务在历史记录中查看执行结果回到顶部6 预防措施建立有效的镜像管理策略清理只是治标预防才是根本。以下措施可有效控制镜像增长6.1 制定镜像标签规范使用语义化版本控制如v1.2.3包含构建日期或Git Commit ID如20230901-abc1234区分环境如dev、staging、prod避免滥用latest标签6.2 设置合理的保留策略根据不同环境设置不同的保留策略环境 保留策略 执行频率开发环境 保留最近10-30个版本或7天 每天测试环境 保留最近20-50个版本或30天 每周生产环境 保留所有稳定版本或按需保留 手动6.3 自动化清理流程将清理流程纳入CI/CD流水线定期自动执行使用Harbor API查询存储使用情况在磁盘空间达到阈值时自动触发清理定期运行垃圾回收任务设置通知机制报告清理结果回到顶部7 总结清理Harbor中半年前的镜像是一个系统性的过程涉及标记删除和物理释放两个关键阶段。您可以根据实际情况选择合适的方法首选方案使用Harbor原生的保留策略功能方法一通过图形界面配置保留规则简单可靠且支持自动化。备用方案如需更复杂条件可通过API脚本方法二精确控制删除过程但需注意测试和验证。必须步骤无论采用哪种删除方法都必须执行垃圾回收(GC) 来真正释放物理磁盘空间。定期清理不再使用的镜像不仅是存储空间的要求也是安全最佳实践。通过建立规范的镜像管理策略和自动化清理流程您可以有效控制Harbor存储增长确保容器环境的高效稳定运行。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

美容加盟网站建设建设网站公司价格

还在为"无法启动此程序,因为计算机中丢失xxx.dll"的错误提示而困扰吗?每次安装新软件或游戏时,总是遇到各种奇怪的启动问题?别担心,这通常只是缺少了必要的Visual C运行库组件。本指南将带你一步步解决所有相…

张小明 2026/1/5 0:51:28 网站建设

如何免费制作企业网站营销网站流程与步骤

今年AIGC检测这块儿真是翻车重灾区。现在用AI写初稿不是秘密,但问题是,论文aigc的“AI味”实在太重,学校的检测系统一抓一个准。我这俩月几乎把市面上能找到的降ai工具都踩了一遍坑,花了不少冤枉钱。怎么说呢,很多工具…

张小明 2026/1/5 3:25:50 网站建设

成都工程建设信息网站网站宽屏背景

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 开发一个完整的 DeFi 项目演示应用,包含:1. ERC20 代币合约;2. 流动性池合约,支持代币兑换;3. 质押挖矿功能;…

张小明 2026/1/5 3:25:48 网站建设

网站站长要会什么用东北建站

在Amlogic S9xxx设备上快速更换Debian内核的完整教程 【免费下载链接】amlogic-s9xxx-armbian amlogic-s9xxx-armbian: 该项目提供了为Amlogic、Rockchip和Allwinner盒子构建的Armbian系统镜像,支持多种设备,允许用户将安卓TV系统更换为功能强大的Armbia…

张小明 2026/1/5 3:25:45 网站建设

网站建设工作要求制作一个链接网站

第一章:企业级网关架构演进与Docker MCP 概述随着微服务架构的广泛应用,传统单体应用网关已难以满足高并发、动态扩缩容和多协议支持的需求。现代企业级网关需具备服务发现、负载均衡、认证鉴权、限流熔断等核心能力,并能无缝集成容器化平台。…

张小明 2026/1/5 3:25:43 网站建设

自己做电影资源网站wordpress优化0sql

Vue-QR码组件终极指南:5分钟快速集成二维码生成功能 【免费下载链接】vue-qrcode 项目地址: https://gitcode.com/gh_mirrors/vue/vue-qrcode Vue-QR码组件是专为Vue 3生态系统设计的高性能二维码生成解决方案,基于成熟的node-qrcode库构建。这个…

张小明 2026/1/5 3:25:41 网站建设