Harbor在arm架构下亲测编译成功

news2025/1/9 1:13:30

先安装好Docker,docker-compose

华为云arm架构安装Docker

arm架构安装docker-compose

Harbor官网: https://github.com/goharbor/harbor/releases

Harbor官方没有提供arm架构的包,需要自己编译,我编译好的版本是:harbor-1.9.1

大家可以按我的博客,自己去编译,或评论留言给我,我发给大家
我编译好的版本是: harbor-1.9.1

arm架构下编译Harbor


#下载源码包 https://github.com/goharbor/harbor/archive/v1.9.1.tar.gz
wget https://codeload.github.com/goharbor/harbor/tar.gz/v1.9.1

#解压harbor源码包
tar -zxvf v1.9.1.tar.gz 

#进入源码根目录
cd harbor-1.9.1

#编辑 harbor.yml 配置文件,修改其中的参数,例如主机名、密码等信息。
vim make/harbor.yml
#hostname = reg.mydomain.com
#主机IP
hostname: 122.9.0.1

#密码
harbor_admin_password: Harbor12345

#修改数据保存目录
data_volume: /data1/harbor

log:
  location: /data1/var/log/harbor

#harbor从1.6版本之后仅支持PostgreSQL数据库作为外部数据库,之前版本可以使用mysql

#可以使用外部的redis
#也可以使用自带的redis,就不要放开注释
external_redis:
  host: 192.168.1.1
  port: 6379
  password: beyond2020

#修改 Dockerfile,将 photon:2.0 修改为 photon:3.0,是因为 photon 3.0 才开始支持 aarch64。
#有可能是photon:1.0 修改为 photon:3.0
find ./ -type f|grep "Dockerfile$"|grep -v "\.D"|xargs sed -i "s#photon:2.0#photon:3.0#g"

find ./ -type f|grep "Dockerfile$"|grep -v "\.D"|xargs sed -i "s#photon:1.0#photon:3.0#g"

#启动编译组件功能。
vim Makefile
... ... 
BUILDBIN=true 
... ... 
REGISTRYVERSION=v2.7.1
... ... 

#修改以下几个文件,这几处是软件存在的 BUG,请知悉。
vim make/photon/Makefile
#修改为: /binary/bin/registry
#如下:
@echo "building registry container for photon..."
@chmod 655 $(DOCKERFILEPATH_REG)/binary/bin/registry && $(DOCKERBUILD) -f $(DOCKERFILEPATH_REG)/$(DOCKERFILENAME_REG) -t $(DOCKERIMAGENAME_REG):$(REGISTRYVERSION)-$(VERSIONTAG) .
@echo "Done."

vim make/photon/registry/Dockerfile
#修改为: COPY ./make/photon/registry/binary/bin/registry /usr/bin
#如下
COPY ./make/photon/common/install_cert.sh /harbor
COPY ./make/photon/registry/entrypoint.sh /
COPY ./make/photon/registry/binary/bin/registry /usr/bin

vim make/photon/registryctl/Dockerfile
#修改为: COPY ./make/photon/registry/binary/bin/registry /usr/bin
#如下:
COPY ./make/photon/common/install_cert.sh /harbor
COPY ./make/photon/registry/binary/bin/registry /usr/bin
COPY ./make/photon/registryctl/start.sh /harbor/
COPY ./make/photon/registryctl/harbor_registryctl /harbor/

#拉取 golang 1.12.12 官网镜像。
docker pull golang:1.12.12

#编译、安装和启动 harbor 服务,开启 Notary 和 Clair 功能,执行如下命令。
cd harbor-1.9.1

make install GOBUILDIMAGE=golang:1.12.12 VERSIONTAG=v1.9.1 PKGVERSIONTAG=v1.9.1 UIVERSIONTAG=v1.9.1

编译完查看Harbor启动情况

docker ps

#redis 一直在重启 Restarting
goharbor/redis-photon:v1.9.1             "redis-server /etc/r…"   6 minutes ago   Restarting (139) 19 seconds ago  

goharbor/redis-photon:v1.9.1 查看日志报错如下:
<jemalloc>: Unsupported system page size

华为云arm架构docker启动redis报错:<jemalloc>: Unsupported system page size

#再次查看
docker ps

#harbor-core 一直在重启 Restarting
goharbor/harbor-core:v1.9.1              "/harbor/harbor_core"    8 minutes ago   Restarting (1) 4 seconds ago    

#查看日志报错        
[ERROR] [/common/config/manager.go:118]: loadSystemConfigFromEnv failed, config item, key: clair_db_port,  err: strconv.Atoi: parsing "": invalid syntax
[FATAL] [/core/main.go:185]: failed to initialize database: register db Ping `default`, pq: password authentication failed for user "postgres"

#进入容器
docker-compose exec postgresql sh
docker exec -ti harbor-db psql

#执行sql
psql
\l
\c registry
\c registry
TRUNCATE TABLE project_blob;
#退出
\q 

#查看日志
tail -f /var/log/harbor/core.log

#停止harbor
docker-compose stop

#启动harbor
docker-compose start

#最终解决了上面的问题
vim common/config/core/env
CLAIR_DB_PORT=5432

#还有这个问题:
[FATAL] [/core/main.go:185]: failed to initialize database: register db Ping `default`, pq: password authentication failed for user "postgres"

#删除database
mkdir /data1/cert/
rm -rf /data1/database

https://github.com/goharbor/harbor/issues/7609
#其实我还做了件事情,进入harbor-db的容器 执行了以下命令
su - postgres
psql
alter role postgres with password 'root123';
#然后我又创建了上面那个路径,再harbor-compose重启了 然后就好了,我后来又关闭, 删了 /data1/cert/ 又好了,真不知道是什么动作影响了结果。

#如果使用外部的redis, 注释掉redis的编译打镜像,重新编译, 成功了
vim harbor-1.9.1/make/photon/Makefile
#如下:
_build_redis:
        @echo "building redis container for photon..."
        #注释了redis的编译打镜像
        #@$(DOCKERBUILD) -f $(DOCKERFILEPATH_REDIS)/$(DOCKERFILENAME_REDIS) -t $(DOCKERIMAGENAME_REDIS):$(REDISVERSION) .
        @echo "Done."

#重新编译       
make install GOBUILDIMAGE=golang:1.12.12 VERSIONTAG=v1.9.1 PKGVERSIONTAG=v1.9.1 UIVERSIONTAG=v1.9.1

docker ps
#发现所有harbor相关的服务都启动OK了,表示安装完毕

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

访问Harbor

#浏览器访问
http://122.9.0.1/
默认账号/密码:admin/Harbor12345

在这里插入图片描述
在这里插入图片描述

Docker配置Harbor仓库地址

vim /etc/docker/daemon.json

#增加下面内容,harbor默认端口为80情况,如果非80,需要在IP后加端口
#{"insecure-registries":["harbor服务端IP"]}

{"insecure-registries":["122.9.0.1"]}

#重新加载配置
systemctl daemon-reload

#重启docker
systemctl restart docker

#登录成功
docker login 122.9.0.1
输入账户和密码

#或者
docker login 122.9.0.1 -u admin -p Harbor12345

#推送镜像到Harbor仓库
docker push 122.9.0.1/library/test:1.0

docker-compose相关命令

docker-compose up -d

docker-compose top
docker-compose ps
docker-compose stop
docker-compose start 再次启动
docker-compose down 停用移除所有容器
docker-compose logs

Harbor相关镜像保存到网盘

把编译成功的镜像保存起来

有需要的,可以评论留言,发给大家

docker save -o goharbor_harbor-jobservice_arm64.tar goharbor/harbor-jobservice:v1.9.1
docker save -o goharbor_nginx-photon_arm64.tar goharbor/nginx-photon:v1.9.1
docker save -o goharbor_harbor-core_arm64.tar goharbor/harbor-core:v1.9.1
docker save -o goharbor_registry-photon_arm64.tar goharbor/registry-photon:v2.7.1-v1.9.1
docker save -o goharbor_harbor-registryctl_arm64.tar goharbor/harbor-registryctl:v1.9.1  
 docker save -o goharbor_harbor-portal_arm64.tar goharbor/harbor-portal:v1.9.1
docker save -o goharbor_harbor-db_arm64.tar goharbor/harbor-db:v1.9.1
docker save -o goharbor_redis-photon_arm64.tar goharbor/redis-photon:v1.9.1
docker save -o goharbor_harbor-log_arm64.tar goharbor/harbor-log:v1.9.1

docker save -o goharbor_prepare_arm64.tar goharbor/prepare:v1.9.1
docker save -o photon_arm64.tar photon:3.0
docker save -o debian_arm64.tar debian:buster-slim
docker save -o golang_1_12_12_arm64.tar golang:1.12.12
docker save -o golang_1_11_arm64.tar golang:1.11    

docker load -i goharbor_harbor-jobservice_arm64.tar

参考链接:
https://bbs.huaweicloud.com/forum/thread-40503-1-1.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/541978.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vivado 下 LED 流水灯实验

目录 Vivado 下 LED 流水灯实验 1、实验简介 2、实验环境 3、实验原理 3.1、LED硬件电路 3.2、程序设计 4、Vivado 工程 4.1、创建工程 4.2、编写流水灯的 verilog代码 1. 点击 Project Manager 下的 Add Sources 图标&#xff08;或者使用快捷键 AltA&#xff09;。…

基于协同过滤的推荐算法

基于协同过滤的推荐算法 基于协同过滤&#xff08;CF&#xff09;的推荐基于近邻的协同过滤基于用户的协同过滤&#xff08;User-CF&#xff09;基于物品的协同过滤&#xff08;Item-CF&#xff09;User-CF 和 Item-CF 的比较基于协同过滤的推荐优缺点基于模型的协同过滤隐语义…

WoW 游戏软件

访问【WRITE-BUG数字空间】_[内附完整源码和文档] 我们选择Tcp协议进行传输&#xff0c;之所以采用tcp,首先是因为tcp传输稳定&#xff0c;相比于udp不稳定的传输&#xff0c;tcp能确保消息一定传输出去。然后是tcp有服务器&#xff0c;相比于 p2p 无服务器模型&#xff0c;tc…

RocketMQ 下载安装

一、下载地址 https://rocketmq.apache.org/download/ 下载完成解压即可 二、安装 2.1 系统环境变量配置 1、右键我的电脑–>属性 ​ 2、高级系统设置–环境变量 ​ 3、系统变量中–>新建 2.2 启动NAMESERVER cmd命令框执行进入至‘MQ文件夹\bin’下 start mqnames…

【教学类-33-02】食物加加加2.0版(3、4、5、10、15、20以内数字加法,随机抽数)

作品展示 3以内点数加法&#xff1a;加法最大值6 4以内点数加法&#xff1a;加法最大值8 背景需求&#xff1a; 幼儿在完成“5以内加法21题、5以内减法21题”时&#xff0c;有两个特点&#xff1a; 1、50%幼儿口算、另外50%不会做的孩子虽然画圈划圈&#xff0c;但更多还是习…

数据结构_图

目录 1. 图的基本概念 1.1 图的定义 1.1.1 有向图 1.1.2 无向图 1.1.3 简单图、多重图 1.1.4 完全图&#xff08;也称简单完全图&#xff09; 1.1.5 子图 1.1.6 连通、连通图和连通分量 1.1.7 强连通图、强连通分量 1.1.8 生成树、生成森林 1.1.9 顶点的度、入度和出…

MapReduce【自定义InputFormat】

MapReduce在处理小文件时效率很低&#xff0c;但面对大量的小文件又不可避免&#xff0c;这个时候就需要相应的解决方案。 默认的输入格式为TextInputFormat&#xff0c;对于小文件&#xff0c;它是按照它的父类FileInputFormat的切片机制来切片的&#xff0c;也就是不管一个文…

Java基础学习(17)网络编程

Java基础学习 一、 网络编程1.1 什么是网络编程1.2 常见的软件架构&#xff1a;1.3 网络编程的三要素1.4 IP1.4.1 InetAddress用法 1.5 端口号1.6 协议1.6.1 UDP协议1.6.1.1 UDP的三种通信方式 1.6.2 TCP协议1.6.2.1 TCP底层原理 一、 网络编程 1.1 什么是网络编程 解释&…

C++常用的支持中文的GUI库Qt 6之一:下载、安装与使用

C常用的支持中文的GUI库Qt 6之一&#xff1a;下载、安装与使用 因为Qt发展变化较快&#xff0c;网上许多介绍Qt的下载、安装与使用已过时&#xff0c;初学者常因行不通而受挫&#xff0c;故此发布本文&#xff0c;以Qt 6.2.4开源版在Windows 10安装与使用为例介绍。 C好用的GU…

DM8:达梦数据库宕机版本记录汇总(持续更新中)

DM8:达梦数据库宕机版本记录汇总&#xff08;持续更新中&#xff09; 环境介绍1 SQL引起的数据库故障1.1 SQL引起的数据库故障汇总表1.2 gdb dmserver core 调试得到数据库崩溃时的内存信息1.3 优化参数解决故障 环境介绍 在测试环境或生产环境&#xff0c;特别情况下会遇到数…

go tool pprof 参数 ‘-base‘ 和 ‘-diff_base‘ 之间的区别

go tool pprof 工具是用于分析由 runtime/pprof包 或 net/http/pprof包产生的profile数据&#xff0c;完整的帮助文档在 https://github.com/google/pprof/blob/main/doc/README.md &#xff0c;pprof 工具支持的参数很多&#xff0c;可以用命令 go tool pprof --help来查看全部…

DJ5-4 交换局域网(第一节课)

目录 一、局域网概述 1、LAN 的特点和分类 2、常见的网络拓扑结构 二、计算机与局域网的连接 三、局域网体系结构 四、链路层寻址地址 1、MAC 地址分配 2、MAC 地址识别 五、ARP 地址解析协议 1、ARP 地址解析协议 2、ARP&#xff1a;两个主机位于同一个局域网 3、…

网络计算模式复习(六)

什么是CDN CDN的全称是Content Delivery Network&#xff0c;即内容分发网络。 其目的通过在现有的Internet中增加一层新的网络架构&#xff0c;将网站的内容发布到最接近用户的网络“边缘”&#xff0c;使用户可以就近取得所需的内容&#xff0c;解决Internet网络拥挤的状况&…

socket套接字通信 TCP传输控制协议/IP网络协议 5.18

B/S :浏览器和服务器 C/S :客户机和服务器 网络的体系结构&#xff1a; 网络的层次结构和每层所使用协议的集合 网络采用分层管理的方法&#xff0c;将网络的功能划分为不同的模块 OSI模型&#xff1a; 共7种&#xff1a; 应用层&#xff1a;接收用户的数据&#xff0c;面…

Blender基础技巧小结(三)

本文续签一篇&#xff1a;Blender基础技巧小结&#xff08;二&#xff09;_皮尔斯巴巴罗的博客-CSDN博客 将物体显示为模板&#xff0c;类似Maya Template 四窗口视图 调整3d视图远截面 Blender并不直接支持放样&#xff0c;可以用第三方插件&#xff0c;但效果并不好 基于me…

usb摄像头驱动打印信息

usb摄像头驱动打印信息 文章目录 usb摄像头驱动打印信息 在ubuntu中接入罗技c920摄像头打印的信息如下&#xff1a; [ 100.873222] usb 3-2: new high-speed USB device number 5 using xhci_hcd [ 101.230728] usb 3-2: New USB device found, idVendor046d, idProduct08e5 …

SpringMVC的拦截器(Interceptor)

文章目录 1 拦截器概念2 拦截器入门案例2.1 环境准备2.2 拦截器开发步骤1:创建拦截器类步骤2:配置拦截器类步骤3:SpringMVC添加SpringMvcSupport包扫描步骤4:运行程序测试步骤5:修改拦截器拦截规则步骤6:简化SpringMvcSupport的编写 3 拦截器参数3.1 前置处理方法3.2 后置处理方…

使用frp进行内网穿透(远程连接内网服务器)

文章目录 云服务购买服务器端&#xff08;即我们购买的服务器&#xff09;配置客户端&#xff08;即我们自己的服务器&#xff09;配置使用xshell登录远程服务器在服务器端设置frp开机自启动在客户端设置frp开机自启动 这里主要介绍使用frp工具进行内网穿透&#xff0c;适合的场…

Spring6和SpringBoot3的新特性-你不得不了解的AOT原来这么简单

Spring6.0新特性 一、Spring的发展历史 二、AOT AOT是Spring6.0提供的一个新特性&#xff0c;Ahead of Time 提前编译。 1.AOT概述 1.1 JIT和AOT的关系 1.1.1 JIT JIT(Just-in-time) 动态编译&#xff0c;即时编译&#xff0c;也就是边运行边编译&#xff0c;也就是在程序运…

LangChain与大型语言模型(LLMs)应用基础教程:角色定义

如果您还没有看过我之前写的两篇博客&#xff0c;请先看一下&#xff0c;这样有助于对本文的理解&#xff1a; LangChain与大型语言模型(LLMs)应用基础教程:Prompt模板 LangChain与大型语言模型(LLMs)应用基础教程:信息抽取 LangChain是大型语言模型(LLM)的应用框架,LangCha…