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

先安装好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了,表示安装完毕
WechatIMG52.png
WechatIMG53.png
WechatIMG54.png

访问Harbor

浏览器访问

http://122.9.0.1/
默认账号/密码:admin/Harbor12345

1624781364415.jpg
1624781389345.jpg

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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,172评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,346评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,788评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,299评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,409评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,467评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,476评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,262评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,699评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,994评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,167评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,827评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,499评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,149评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,387评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,028评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,055评论 2 352

推荐阅读更多精彩内容