第一阶段使用python实现,大致步骤如下:
#! /usr/bin/env python3
# -*- coding:utf-8 -*-
import requests
import os
class HarborRequest(object):
def __init__(self, login_url, username, password):
self.username = username
self.password = password
self.login_url = login_url
self.session = requests.Session()
self.login()
def login(self):
requests.packages.urllib3.disable_warnings()
self.session.get(self.login_url, params={"principal": self.username, "password": self.password}, verify=False)
class CleanHarbor(object):
def __init__(self, harbor_domain, username, password, num, schema="http", ):
self.num = num
self.schema = schema
self.harbor_domain = harbor_domain
self.harbor_url = self.schema + "://" + self.harbor_domain
self.login_url = self.harbor_url + "/login"
self.api_url = self.harbor_url + "/api"
self.pro_url = self.api_url + "/projects"
self.repos_url = self.api_url + "/repositories"
self.username = username
self.password = password
self.client = HarborRequest(self.login_url, self.username, self.password)
def __fetch_pros_obj(self):
# 获取所有项目名称
self.pros_obj = self.client.session.get(self.pro_url).json()
for n in self.pros_obj:
print("分组:",n.get("name"))
return self.pros_obj
def fetch_pros_id(self):
# 获取所有项目ID
self.pros_id = []
pro_res = self.__fetch_pros_obj()
for i in pro_res:
self.pros_id.append(i[project_id])
print("所有项目ID:",self.pros_id)
return self.pros_id
def fetch_del_repos_name(self, pro_id):
# 镜像tag数量大于self.num的镜像仓库名称
self.del_repos_name = []
repos_res = self.client.session.get(self.repos_url, params={"project_id": pro_id})
#print("项目信息:",repos_res.json())
for repo in repos_res.json():
if repo["tags_count"] > self.num:
# print("镜像仓库名称:",repo[name])
self.del_repos_name.append(repo[name])
return self.del_repos_name
def fetch_del_repos(self, repo_name):
# 删除镜像仓库tag
self.del_res = []
tag_url = self.repos_url + "/" + repo_name + "/tags"
# 项目镜像仓库的所有tags,按创建时间排序
tags = self.client.session.get(tag_url).json()
tags_sort = sorted(tags, key=lambda a: a["created"])
#print(len(tags_sort),tags_sort)
# 除了最新的self.num个,其他的tag都添加到待删除列表del_tags
del_tags = tags_sort[0:len(tags_sort) - self.num]
# print(del_tags)
for tag in del_tags:
del_repo_tag_url = tag_url + "/" + tag[name]
print(del_repo_tag_url)
del_res = os.popen(curl -X DELETE -u %s:%s -s -w %s %s % (self.username,self.password,%{http_code},del_repo_tag_url)).readlines()
self.del_res.append("镜像: %s 删除状态: %s" % (del_repo_tag_url,del_res))
return self.del_res
def work(self):
# 遍历project id
for i in self.fetch_pros_id():
# 获取所有tag超过self.num的repos
repos = self.fetch_del_repos_name(i)
if repos:
for repo in repos:
del_repos = self.fetch_del_repos(repo)
print(del_repos)
if __name__ == "__main__":
clean = CleanHarbor(harbor_domain="192.168.xx.xxx",
username="harbor",
password="Harbor@123",
num=3)
clean.work()
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/129429.html
摘要:私有仓库是,并在中运行。不要使用或为主机名注册表服务需要由外部客户端访问或,默认为用于访问和令牌通知服务的协议。打开或关闭,默认打开打开此属性时,准备脚本创建私钥和根证书,用于生成验证注册表令牌。 上一篇文章搭建了一个具有基础功能,权限认证、TLS 的私有仓库,但是Docker Registry 作为镜像仓库,连管理界面都没有,甚至连一些运维必备的功能都是缺失的,还有什么 Docker...
摘要:的每个组件都是以容器的形式构建的,使用来对它进行部署。登录输入用户名,默认密码或已修改密码登录系统。 showImg(https://segmentfault.com/img/remote/1460000012261129?w=1280&h=786); 什么是 Harbor? 第一次使用这个的时候是刚进公司处理的第一个任务的时候,发现 Harbor 就是一个用于存储和分发 Docker...
摘要:架构介绍主要组件在架构上主要由五个组件构成的等服务,通过一个前置的反向代理统一接收浏览器客户端的请求,并将请求转发给后端不同的服务。目前不支持功能已提交。 前言 对于 Harbor 这样一个优秀的 Docker Registry 管理开源项目,以下内容基本上来自前人已有的研究,我只是将其在实践中进行了测试,并整理汇集了相关资料供大家参考,同时针对 Harbor 与 Rancher产品的...
摘要:在年的月号之后,的版本命名开始发生变化,同时将版本和版本进行分开,表示年月发布。离线安装命名前安装我们可以使用来对多个容器进行管理。离线安装安装公司开源的企业级的管理项目。 以下环境皆为ubuntu16.04,主要安装docker,docker-compose,docker仓库等。 Docker安装 参考官方 A: 有源安装 sudo apt-get remove docker doc...
摘要:输入镜像地址后,在自建镜像仓库栏,输入自建镜像仓库详细信息,字段说明如下,当前只支持基于同一主账号下云主机搭建的镜像仓库。自建镜像仓库支持容器镜像封装了应用代码,是用户的重要资产之一,出于强安全性的考虑,部分用户在容器应用的使用过程中有使用自建镜像仓库的需求。Cube 支持拉取同一 VPC 下的自建镜像仓库,丰富了使用场景,确保用户镜像和代码安全。控制台创建 / 修改 Cube 实例在控制台...
摘要:正好我们在使用作为的仓库,同时提供了等诸多类型的仓库功能。值得一提的是,我们可以使用这个仓库从和下载镜像,但是我们不能通过这个仓库推送镜像到远程仓库。 背景 我们一直使用 harbor 作为docker的镜像仓库,但Harbor只能作为私有仓库,当需要Docker Hub 或 Google Cloud Containers 上的镜像时,我们只能自己手动pull,重新打tag,再push...
阅读 1347·2023-01-11 13:20
阅读 1685·2023-01-11 13:20
阅读 1133·2023-01-11 13:20
阅读 1860·2023-01-11 13:20
阅读 4101·2023-01-11 13:20
阅读 2705·2023-01-11 13:20
阅读 1386·2023-01-11 13:20
阅读 3598·2023-01-11 13:20