Harbor镜像仓库的导出与整理之二
Harbor镜像仓库的导出与整理之二
背景
前几天参照大神的blog进行了一下harbor的镜像列表的获取与下载.
当时发现一个很诡异的问题.
实际上镜像仓库里面的镜像很多.
但是导出和列表里面的却很少.
经过查询发现harbor的v2.0的API里面存在一些限制.
每次api的返回结果最多是 100 个项目.
默认值是10个.
所以理论上他的数值就是 projects * 10 的最大值.
这个与项目的需求和场景是严重不符合的.
所以查询了下方式方法进行了一下改进.
curl的参数有配置
curl 能够设置项目信息等. 但是发现, 这个里面其实还是存在坑的.
尤其是需要注意 & 等特殊符号的处理.
curl -s -u 'admin:harborpassword' --limit-rate 1M -H 'Content-Type: application/json' \
-X GET http://192.168.xxx.xx/api/v2.0/projects/erp/repositories?page_size=100 -k \
| python -m json.tool | grep name | awk '/"name": /' | awk -F '"' '{print $4}' |wc -l
能够法相这个project 下面其实是有 98个 镜像的.
然后可以使用这个命令进行一下获取. 如果某个项目超过了 98 最好是需要使用 page2的方式进行处理
curl -s -u 'admin:harborpassword' --limit-rate 1M -H 'Content-Type: application/json' \
-X GET http://192.168.xxx.xx/api/v2.0/projects/someProject/repositories/repositories?page_size=50\&page=2 -k \
| python -m json.tool | grep name | awk '/"name": /' | awk -F '"' '{print $4}' |wc -l
注意 如果是多个条件, 需要 & 前面增加反斜线进行分割.
我改为 50的pagesize 第二页就会有 48个镜像. 问题是可控的
导出最新的镜像
Harbor_Address=http://192.168.xxx.xx #Harbor主机地址
Harbor_Pulltag=192.168.xxx.xx:80
Harbor_User=admin #登录Harbor的用户
Harbor_Passwd=harborpassword #登录Harbor的用户密码
Images_File=ImageInHarbor-`date '+%Y-%m-%d'`.txt # 镜像清单文件
echo " " > $Images_File
Tar_File=/data/Harbor-backup_new #镜像tar包存放路径
mkdir -p $Tar_File
#set -x
# 获取Harbor中所有的项目(Projects)
Project_List=$(curl -s -u $Harbor_User:$Harbor_Passwd -H "Content-Type: application/json" -X GET $Harbor_Address/api/v2.0/projects?page_size=100 -k | python -m json.tool | grep name | awk '/"name": /' | awk -F '"' '{print $4}')
for Project in $Project_List;do
# 循环获取项目下所有的镜像
mkdir -p ${Tar_File}/${Project}
Image_Names=$(curl -s -u $Harbor_User:$Harbor_Passwd -H "Content-Type: application/json" -X GET $Harbor_Address/api/v2.0/projects/$Project/repositories?page_size=100 -k | python -m json.tool | grep name | awk '/"name": /' | awk -F '"' '{print $4}')
for Image in $Image_Names;do
# 循环获取镜像的版本(tag)
Image_Tags=$(curl -s -u $Harbor_User:$Harbor_Passwd -H "Content-Type: application/json" -X GET $Harbor_Address/v2/$Image/tags/list?page_size=100 -k | awk -F '"' '{print $8,$10,$12}')
Tag=$(echo $Image_Tags |sort |awk '{print $NF}')
docker pull "$Harbor_Pulltag/$Image:$Tag"
docker save "$Harbor_Pulltag/$Image:$Tag" |gzip > ${Tar_File}/${Image}.${Tag}.tar.gz
done
done
镜像文件太多时的留存策略
同事这边给出过一个处理方式.
我这边东施效颦一下进行一下简单总结
Harbor其实是有一个基本的留存策略的
可以保证每个项目仅保留部分镜像信息.
具体的方法为:
admin 登录harbor
->打开 项目
->选择最大磁盘空间的项目
->选中项目的 tag retention 或者是中文 策略 标签页
->选中tag保留
->操作,编辑后者是新增策略 输入
->以artifact 数量或者是天数为条件
->保留最近推送的#个镜像, 输入个数为5 或这个特性需要的个数.
->保留
->运行 或者是 模拟运行.
->可以设置定时执行, 比如每周执行一次.
验证镜像容量就会出现了很大的缩小.
需要注意 可能还需要执行一次->系统管理->垃圾清理
Harbor镜像仓库的导出与整理之二的更多相关文章
- harbor镜像仓库-02-https访问配置
harbor镜像仓库-02-https访问配置 harbordockerhttps harbor搭建部署参考上一章节 harbor镜像仓库-01-搭建部署 Harbor默认使用http,给harbor ...
- harbor镜像仓库-01-搭建部署
harbor镜像仓库-01-搭建部署 dockerregistryharbor安装部署docker-compose harbor的https配置参考另一章节harbor镜像仓库-02-https访问配 ...
- Harbor镜像仓库
Harbor镜像仓库 作者 刘畅 时间 2020-7-11 微信 目录 1.下载离线安装包 1 2.安装docker 1 3.安装docker-compose 2 4.自签TLS证书 2 4.1.创建 ...
- CentOS部署Harbor镜像仓库
关于Harbor Harbor是用于存储和分发Docker镜像的镜像仓库服务,相比Docker Registry,Harbor在安全.标识.管理等方面做了增强,更适合企业使用: 官方网站:https: ...
- harbor镜像仓库-https访问配置
1. 证书的生成 在测试或开发环境中,您可以选择使用自签名证书,而不是来自受信任的第三方CA的证书.以下内容将向您展示如何创建自己的CA,并使用您的CA签署服务器证书和客户端证书. 1.1 生成c ...
- 企业级 Harbor 镜像仓库
Harbor是由VMWare公司开源的容器镜像仓库.事实上,Harbor是在Docker Registry上进行了相应 的企业级扩展,从而获得了更加广泛的应用,这些新的企业级特性包括:管理用户界面,基 ...
- docker登录没有配置https的harbor镜像仓库
已经搭建harbor 仓库 ,域名 172.16.1.99 出现问题: 客户端尝试登录 仓库 [root@localhost docker]# docker login 172.16.1.99:80 ...
- Docker: 企业级镜像仓库Harbor的使用
上一节,演示了Harbor的安装部署 这次我们来讲解 Harbor的使用. 我们需要了解到: 1. 如何推镜像到镜像仓库 2. 如何从镜像仓库拉取镜像 3. 如何运行从私有仓库拉取的镜像 # 查看 h ...
- Docker镜像仓库Harbor搭建及配置
一.harbor简介 Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,通过添加一些企业必需的功能特性,例如安全.标识和管理等,扩展了开源Docker Distribut ...
- 03: 使用docker搭建Harbor私有镜像仓库
1.1 harbor介绍 1.Harbor简介 1. Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器. 2. 镜像的存储harbor使用的是官方的docker regi ...
随机推荐
- ASCII编码:计算机文本通信的基石
ASCII(美国信息交换标准代码)编码是一种将字符与数字相互映射的编码系统,它为现代计算机文本通信奠定了基础.本文将从多个方面介绍ASCII编码的原理.发展历程.应用及其在现实场景中的优势,帮助您深入 ...
- bazel 使用 gtest/gmock 报错 Constraints from @bazel_tools//platforms have been removed
问题描述 运行 bazel test 命令,遇到错误:"Constraints from @bazel_tools//platforms have been removed. Please ...
- C++标准库中copy算法的使用
目录 std::copy是C++标准库中的算法接口,主要用于两个容器间的复制,据说其效率要优于自己用for循环逐个复制.之前一直非常混淆其中的用法,这里总结了几个例子如下: #include < ...
- 数据安全无小事:揭秘华为云GaussDB(openGauss)全密态数据库
摘要:全密态数据库,专门处理密文数据的数据库系统,数据以加密形态存储在数据库服务器中,数据库支持对密文数据的检索与计算. 1.云数据库安全现状及问题 伴随着云基础设施的快速增长和成熟,与之对应的云数据 ...
- 云图说 | Workflow:流水线工具,助您高效完成AI开发
摘要:Workflow是将ML Ops(机器学习和DevOps的组合实践)应用于ModelArts平台,可以让您更高效的完成AI开发. 本文分享自华为云社区<云图说 | 第263期 Workfl ...
- DevUI开源经验分享:从0到1开始运营你的开源项目
摘要:DevUI是面向企业中后台产品的开源前端解决方案,于2019年6月正式在GitHub开源,从当时的无人问津到去年8月累计1000 Star,再到现如今上千名社区成员.上百位贡献者.达成了3000 ...
- VUE3/TS/TSX入门手册指北
VUE3入门手册 vue3入门 首先 查看 官方文档:https://cn.vuejs.org/guide/quick-start.html 如果有vue2基础,速成课程:https://www.zh ...
- A/B 测试成为企业“新窗口”:增长盈利告别经验主义,数据科学才是未来
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 如何能够预知一个产品的未来?最好的办法当然是穿越到未来看一看. 这种"模拟未来.窥探底牌"的设 ...
- SpringBoot yml 小格子 变 小叶子
SpringBoot yml 小格子 变 小叶子 一般添加十多个模块后会出现这样的情况,正常情况下,看POM 文件里的 spring 引用是否异常 一般把 idea 关了再打开试试,有几次我是关了再开 ...
- Zookeeper面试题总结
1.请简述Zookeeper的选举机制 假设有五台服务器组成的zookeeper集群,它们的id从1-5,同时它们都是最新启动的,也就是没有历史数据,在存放数据量这一点上,都是一样的. 假设这些服务器 ...