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


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

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

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

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

相关推荐
iangyu30 分钟前
docker常用命令
运维·docker·容器
Amagi.1 小时前
Spring中Bean的作用域
java·后端·spring
2402_857589361 小时前
Spring Boot新闻推荐系统设计与实现
java·spring boot·后端
J老熊2 小时前
Spring Cloud Netflix Eureka 注册中心讲解和案例示范
java·后端·spring·spring cloud·面试·eureka·系统架构
Benaso2 小时前
Rust 快速入门(一)
开发语言·后端·rust
sco52822 小时前
SpringBoot 集成 Ehcache 实现本地缓存
java·spring boot·后端
原机小子2 小时前
在线教育的未来:SpringBoot技术实现
java·spring boot·后端
吾日三省吾码2 小时前
详解JVM类加载机制
后端
努力的布布2 小时前
SpringMVC源码-AbstractHandlerMethodMapping处理器映射器将@Controller修饰类方法存储到处理器映射器
java·后端·spring
PacosonSWJTU3 小时前
spring揭秘25-springmvc03-其他组件(文件上传+拦截器+处理器适配器+异常统一处理)
java·后端·springmvc