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架构)


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

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

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

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

相关推荐
why1515 小时前
微服务商城-商品微服务
数据库·后端·golang
藥瓿亭6 小时前
K8S认证|CKS题库+答案| 9. 网络策略 NetworkPolicy
linux·运维·docker·云原生·容器·kubernetes·cks
955.6 小时前
k8s从入门到放弃之Pod的容器探针检测
云原生·容器·kubernetes
LFloyue7 小时前
Linux离线(zip方式)安装docker
linux·docker
結城7 小时前
mybatisX的使用,简化springboot的开发,不用再写entity、mapper以及service了!
java·spring boot·后端
星辰离彬7 小时前
Java 与 MySQL 性能优化:MySQL 慢 SQL 诊断与分析方法详解
java·spring boot·后端·sql·mysql·性能优化
q_19132846957 小时前
基于Springboot+Vue的办公管理系统
java·vue.js·spring boot·后端·intellij idea
yunken288 小时前
docker容器保存为不依赖基础镜像的独立镜像方法
java·docker·容器
langmeng1108 小时前
使用docker在3台服务器上搭建基于版本redis 6.x的一主两从模式
运维·redis·docker·容器·集群
陪我一起学编程8 小时前
关于nvm与node.js
vue.js·后端·npm·node.js