harbor离线安装2.9.0-arm64架构服务制作和升级部署

我正在参加「金石计划」

写在前面

harbor官网地址:github.com/goharbor/ha...

对于arm64架构的harbor服务,官方一直没有提供相关的支持!!!让人头大

最近有些漏洞被扫描出来了,漏洞说明如下:

Harbor未授权访问漏洞 (CVE-2022-46463)【原理扫描】

Harbor 是一个开源的 Docker Registry 管理项目,用于托管容器镜像。 Harbor 受影响版本中镜像仓库存在访问控制缺陷,攻击者可通过页面搜索镜像名称,绕过登陆验证逻辑,直接查看结果中未授权的私有镜像仓库并获取仓库信息(Pull、Push 的时间和 commit 信息,以及镜像存在的漏洞信息等)。

解决建议:

升级 github.com/goharbor/harbor 到 2.6.0 或更高版本

给出的建议是更新harbor到最新版本,但是全网能找到的harbor-arm64架构的离线安装版本,大部分都是2.4.0版本的:例如这个:harbor-v2.4.0离线安装(arm架构)

官方给出的建议是,可以自己编译一个arm64架构的harbor服务: github.com/goharbor/ha...

好家伙,看起来有点麻烦,而且我们公司的服务器一般都是内网环境,没法联网的!!!

离线编译,好像更难了!!!

这里找到了一个不错的思路:找到harbor所需的所有镜像的arm64版本,然后替换离线安装包里面的镜像

好家伙,这个想法,确实不错,那就开干!!!

参考文档可以看这里:www.jianshu.com/p/9925ea2fd...

harbor2.9.0-arm64版本制作

  1. 先拉arm64架构的harbor相关镜像
sh 复制代码
docker pull --platform=linux/arm64 ghcr.io/octohelm/harbor/harbor-registryctl:v2.9.0 
docker pull --platform=linux/arm64 ghcr.io/octohelm/harbor/nginx-photon:v2.9.0 
docker pull --platform=linux/arm64 ghcr.io/octohelm/harbor/registry-photon:v2.9.0
docker pull --platform=linux/arm64 ghcr.io/octohelm/harbor/prepare:v2.9.0    
docker pull --platform=linux/arm64 ghcr.io/octohelm/harbor/harbor-portal:v2.9.0    
docker pull --platform=linux/arm64 ghcr.io/octohelm/harbor/harbor-log:v2.9.0
docker pull --platform=linux/arm64 ghcr.io/octohelm/harbor/harbor-exporter:v2.9.0
docker pull --platform=linux/arm64 ghcr.io/octohelm/harbor/redis-photon:v2.9.0
docker pull --platform=linux/arm64 ghcr.io/octohelm/harbor/trivy-adapter-photon:v2.9.0 
docker pull --platform=linux/arm64 ghcr.io/octohelm/harbor/harbor-core:v2.9.0 
docker pull --platform=linux/arm64 ghcr.io/octohelm/harbor/harbor-db:v2.9.0  
docker pull --platform=linux/arm64 ghcr.io/octohelm/harbor/harbor-jobservice:v2.9.0 
  1. 将相关镜像修改名称
sh 复制代码
docker tag ghcr.io/octohelm/harbor/harbor-registryctl:v2.9.0 goharbor/harbor-registryctl:v2.9.0
docker tag ghcr.io/octohelm/harbor/nginx-photon:v2.9.0 goharbor/nginx-photon:v2.9.0
docker tag ghcr.io/octohelm/harbor/registry-photon:v2.9.0 goharbor/registry-photon:v2.9.0
docker tag ghcr.io/octohelm/harbor/prepare:v2.9.0 goharbor/prepare:v2.9.0     
docker tag ghcr.io/octohelm/harbor/harbor-portal:v2.9.0 goharbor/harbor-portal:v2.9.0    
docker tag ghcr.io/octohelm/harbor/harbor-log:v2.9.0 goharbor/harbor-log:v2.9.0
docker tag ghcr.io/octohelm/harbor/harbor-exporter:v2.9.0 goharbor/harbor-exporter:v2.9.0
docker tag ghcr.io/octohelm/harbor/redis-photon:v2.9.0 goharbor/redis-photon:v2.9.0
docker tag ghcr.io/octohelm/harbor/trivy-adapter-photon:v2.9.0 goharbor/trivy-adapter-photon:v2.9.0
docker tag ghcr.io/octohelm/harbor/harbor-core:v2.9.0 goharbor/harbor-core:v2.9.0
docker tag ghcr.io/octohelm/harbor/harbor-db:v2.9.0 goharbor/harbor-db:v2.9.0
docker tag ghcr.io/octohelm/harbor/harbor-jobservice:v2.9.0 goharbor/harbor-jobservice:v2.9.0
  1. 将harbor相关镜像导出为tar包
sh 复制代码
docker save -o goharbor-harbor-registryctl-v2.9.0.tar goharbor/harbor-registryctl:v2.9.0
docker save -o goharbor-nginx-photon-v2.9.0.tar goharbor/nginx-photon:v2.9.0
docker save -o goharbor-registry-photon-v2.9.0.tar goharbor/registry-photon:v2.9.0
docker save -o goharbor-prepare-v2.9.0.tar goharbor/prepare:v2.9.0
docker save -o goharbor-harbor-portal-v2.9.0.tar goharbor/harbor-portal:v2.9.0
docker save -o goharbor-harbor-log-v2.9.0.tar goharbor/harbor-log:v2.9.0
docker save -o goharbor-harbor-exporter-v2.9.0.tar goharbor/harbor-exporter:v2.9.0
docker save -o goharbor-redis-photon-v2.9.0.tar goharbor/redis-photon:v2.9.0
docker save -o goharbor-trivy-adapter-photon-v2.9.0.tar goharbor/trivy-adapter-photon:v2.9.0
docker save -o goharbor-harbor-core-v2.9.0.tar goharbor/harbor-core:v2.9.0
docker save -o goharbor-harbor-db-v2.9.0.tar goharbor/harbor-db:v2.9.0
docker save -o goharbor-harbor-jobservice-v2.9.0.tar goharbor/harbor-jobservice:v2.9.0

4.将harbor相关的tar包全部合并成一个gz包

sh 复制代码
tar -czvf harbor.v2.9.0-arm64.tar.gz *.tar

5.下载官网离线安装包x86,主要是未了拿里面的配置文件,将里面的harbor.v2.9.0.tar.gz,替换我们上面制作好的harbor.v2.9.0-arm64.tar.gz镜像包即可。harbor-offline-installer-v2.9.0下载地址

6.将install.sh文件,50行,改成下面:

sh 复制代码
#docker load -i ./harbor*.tar.gz
rm -rf images && mkdir images
tar -zxvf ./harbor*.tar.gz -C ./images
ls images/*.tar | xargs -n 1 docker load -i
docker images|grep goharbor
  1. 替换好后重新打包全部合并成一个gz包
sh 复制代码
tar -czvf harbor-offline-installer-v2.9.0-arm64.tar.gz harbor

harbor2.9.0-arm64升级部署

在部署的时候发现,redis服务启动失败,报错信息如下:

没记错的话,类似是下面这个错误信息:

sh 复制代码
<jemalloc>: Unsupported system page size
Out of memory allocating bitmask: Cannot allocate memory

问题不大,既然这个redis无法使用,我们用回2.4.0的redis就好了!!!

这里用2.4.0的redis其实没啥大的影响,因为harbor的核心服务已经是2.9.0了!!!

sh 复制代码
#将2.4.0的redis改一个tag名称,改成2.9.0的
docker tag goharbor/redis-photon:v2.4.0 goharbor/redis-photon:v2.9.0

然后重新打包即可!!!

从2.4.0的harbor升级到2.9.0的harbor,好像改动比较大,所以这里我就直接覆盖升级了。

先将2.4.0相关的服务停了,然后将相关的挂载清了,然后再安装2.9.0,就基本没啥大问题了!!!

sh 复制代码
#清空历史挂载文件:
rm -rf /var/log/harbor/
rm -rf /data/database
rm -rf /data/job_logs
rm -rf /data/redis
rm -rf /data/registry    #harbor镜像存放路径
rm -rf /data/ca_download/

harbor的安装,可以参考这里:安装harbor作为docker镜像仓库,这里就不再过多描述了。

最后安装成功!!!

这里提供已经制作好的harbor-2.9.0-arm64安装包: harbor-v2.9.0离线安装(arm架构)


好了,以上就是我个人的实操了。可能有些不对,大家伙,轻点喷!!!

个人理解,可能也不够全面,班门弄斧了。

好了,今天就先到这里了!!!^_^

如果觉得有收获的,帮忙点赞、评论、收藏一下,再走呗!!!

相关推荐
milanyangbo16 分钟前
“卧槽,系统又崩了!”——别慌,这也许是你看过最通俗易懂的分布式入门
分布式·后端·云原生·架构
AAA修煤气灶刘哥1 小时前
MySQL 查文本查哭了?来唠唠 ES 这货:从 “啥是 ES” 到 Java 撸代码,一篇整明白!
java·后端·elasticsearch
金銀銅鐵1 小时前
[Java] 浅析密封类(Sealed Classes) 在 class 文件中是如何实现的
java·后端
007php0071 小时前
Go语言面试:传值与传引用的区别及选择指南
java·开发语言·后端·算法·面试·golang·xcode
唐叔在学习1 小时前
从MD5到RSA,一文读懂常见的加密算法
后端
javadaydayup1 小时前
为什么 MyBatis Mapper 接口能像普通 Bean 一样被 @Autowired?
后端·mybatis
江池俊1 小时前
解锁无限创意:Tldraw+cpolar如何通过内网穿透技术打破空间限制
docker
Honeysea_701 小时前
容器的定义及工作原理
人工智能·深度学习·机器学习·docker·ai·持续部署
2418ly1 小时前
docker常用命令
运维·docker·容器
yuxb732 小时前
Docker学习笔记(三):镜像与容器管理进阶操作
笔记·学习·docker