基于ARM编译安装docker-harbor

基于ARM编译安装docker-harbor

一、编译内核

此举是为了保证redis镜像可以正常启动

1.安装依赖
yum -y install gcc bc gcc-c++ ncurses ncurses-devel cmake elfutils-libelf-devel openssl-devel
2.下载解压
tar -zxvf linux-4.14.1.tar.gz
cd linux-4.14.1
3.清理内核目录
make mrproper
4.修改内核参数
make menuconfig
#选择Kernel Features --> Page szie
#完成之后,会在目录下生成.config文件

image-20210420154747881

image-20210420154832390

image-20210420154901768

5.注释.config文件中的参数CONFIG_SYSTEM_TRUSTED_KEYS
vim .config
#CONFIG_SYSTEM_TRUSTED_KEYS

#CONFIG_SYSTEM_TRUSTED_KEYS 参数前面添加#,将参数这行注释掉
6.编译内核
make -j50
make modules_install
make install
7.生成系统启动引导配置参数
grub2-mkconfig -o /boot/grub2/grub.cfg
8.修改默认内核启动项
  • 查看系统可用内核
cat /boot/grub2/grub.cfg | grep menuentry

image-20210420161120135

  • 修改开机默认内核
grub2-set-default 'CentOS Linux (4.14.1) 7 (AltArch)'
9.重启并验证
reboot
uname -r
getconf PAGESIZE

image-20210420161328638

二、安装harbor
1.签发证书
  • 创建目录
mkdir  /data/ssl -p
cd /data/ssl
pwd
  • 生成CA证书
openssl genrsa -out ca.key 3072
openssl req -new -x509 -days 3650 -key ca.key -out ca.pem

You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:CH
State or Province Name (full name) []:BJ
Locality Name (eg, city) [Default City]:BJ
Organization Name (eg, company) [Default Company Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:
Email Address []:
  • 生成域名证书
openssl genrsa -out harbor.key 3072
openssl req -new -key harbor.key -out harbor.csr 

Country Name (2 letter code) [XX]:CH
State or Province Name (full name) []:BJ
Locality Name (eg, city) [Default City]:BJ
Organization Name (eg, company) [Default Company Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:harbor
Email Address []:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:        
An optional company name []:
  • 签发证书
openssl  x509 -req -in harbor.csr -CA ca.pem -CAkey ca.key -CAcreateserial -out harbor.pem -days 3650
  • 查看证书
openssl x509 -noout -text -in harbor.pem
  • 生成之后将会有以下文件

image-20210419100200069

2安装
  • 安装docker
wget https://download.docker.com/linux/centos/docker-ce.repo -P /etc/yum.repos.d
yum install -y docker-ce
systemctl start docker
systemctl enable docker
  • 安装docker-compose
yum install -y epel-release
yum install -y docker-compose --enablerepo=epel
  • 下载harbor
wget https://codeload.github.com/goharbor/harbor/tar.gz/refs/tags/v1.9.1
  • 解压harbor
tar -xvf v1.9.1
cd harbor-1.9.1/
  • 编辑/harbor.yml
vim make/harbor.yml

hostname: harbor 

https:
   # https port for harbor, default is 443
   port: 443
   # The path of cert and key files for nginx
   certificate: /data/ssl/harbor.pem
   private_key: /data/ssl/harbor.key
   
#可修改其中参数,如:主机名、https、数据库密码等。
  • 将将 photon:2.0 修改为 photon:3.0( photon:2.0不支持arm )
find ./ -type f|grep "Dockerfile$"|grep -v "\.D"|xargs sed -i "s#photon:2.0#photon:3.0#g"
  • 启动编译
vim Makefile
82 BUILDBIN=true
100 REGISTRYVERSION=v2.7.1
#修改以上行内容
  • 修改make/photon/Makefile的bug
vim make/photon/Makefile
187         @chmod 655 $(DOCKERFILEPATH_REG)/binary/bin/registry && $(DOCKERBUILD) -f $(DOCKERFILEPATH_REG)/$(DOCKERFILENAME_REG) 

#registry 前加bin
  • 修改make/photon/registry/Dockerfile的bug
vim make/photon/registry/Dockerfile
14 COPY ./make/photon/registry/binary/bin/registry /usr/bin
  • 修改make/photon/registryctl/Dockerfile的bug
vim make/photon/registryctl/Dockerfile
 12 COPY ./make/photon/registry/binary/bin/registry /usr/bin
  • 安装git
yum install -y git 
  • 拉取go镜像
docker pull golang:1.12.12
  • 编译harbor服务
make install GOBUILDIMAGE=golang:1.12.12 VERSIONTAG=v1.9.1 PKGVERSIONTAG=v1.9.1 UIVERSIONTAG=v1.9.1

报错:
error: RPC failed; result=35, HTTP code = 0报错:error: RPC failed; result=35, HTTP code = 0
处理:
git config --global http.postBuffer  20M #如果不行加大
  • 编译离线安装包
make package_offline GOBUILDIMAGE=golang:1.12.12 VERSIONTAG=v1.9.1 PKGVERSIONTAG=v1.9.1 UIVERSIONTAG=v1.9.1
  • 启动镜像
tar -xvf harbor-offline-installer-v1.9.1.tgz && cd harbor
sh install.sh

#如果报错就将其它已经启动容器删除
  • 登录
#修改hosts并登录
https://harbor/
#默认账号密码
账号:admin
密码:Harbor12345
三、上传镜像
1.docker配置
vim /etc/docker/daemon.json
#加入harbor的ip
"insecure-registries":["192.168.0.58"],

systemctl daemon-reload && systemctl restart docker
2.登录harbor
docker login 192.168.0.58

Username:admin
Password: Harbor12345
3.上传镜像
#下载并打tag
docker pull centos:7.9.2009
docker tag centos:latest 192.168.0.58/library/centos:7.9.2009

#上传镜像
docker push 192.168.0.58/library/centos:7.9.2009

#删除原来打包好的镜像
docker rmi 192.168.0.58/library/centos:7.9.2009

#拉取镜像
docker pull 192.168.0.58/library/centos:7.9.2009
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: OpenEuler是一个基于开放社区的Linux操作系统,它致力于为广大用户和开发者提供一个开放、安全、高效的操作系统环境。在这个操作系统中,用户可以轻松地获取丰富的开源软件,从而快速地搭建出自己所需的系统环境。 OpenEuler大作业是一个挑战性任务,通过该任务,学生可以深入了解OpenEuler的整体架构和设计理念,同时还可以学会如何在OpenEuler中进行软件开发和部署。在大作业中,学生需要完成一个具有实际意义的项目,例如搭建一个基于OpenEuler的Web应用程序,或是改进OpenEuler中已有的某个模块。 通过完成这个任务,学生将能够提高自己的操作系统开发和部署能力,同时也有机会将自己的成果展示给全世界的开源社区。这个任务非常具有挑战性,但对于有志于从事Linux操作系统相关工作的学生而言,完成这个任务将是一个非常重要的里程碑。 ### 回答2: OpenEuler大作业是指基于开源社区OpenEuler的操作系统、虚拟化或容器技术进行开发和研究的任务。这项工作旨在促进开源技术的发展,提高应用安全性和性能。它可以帮助开发者建立一个高效的操作系统,使其更加适应个人、企业和组织的需求,提供更好的用户体验。此外,它还可以在容器技术和虚拟化方面尝试新的方法,从而增强云端和企业级开发的能力。OpenEuler大作业需要开发者对 Linux 操作系统编程或者虚拟化、容器技术有一定的技术基础和研究背景。参与者需要熟练掌握 C、C++等编程语言,掌握 Linux 操作系统命令、Shell脚本编写技巧,对虚拟化和容器技术有一定的了解和经验。大作业的成果需要经过多次代码测试和性能调优,才能保证其高质量。 参与OpenEuler大作业可以帮助开发者获取硬件、软件和云资源。同时,开发者可以通过大作业交流平台和相关社交平台分享经验和知识,与业界专家进一步探讨最新的技术动态,提高自己的技术水平和软件开发能力。 ### 回答3: openeuler是一个开源的Linux操作系统,它基于CentOS,旨在为用户提供安全、稳定的操作系统。openeuler大作业涉及到对openeuler操作系统进行开发、测试和优化,以提高其性能和稳定性。 在openeuler大作业中,开发团队需要结合用户需求和市场趋势,对系统进行更新和升级。这可能涉及到软件包的更新、添加新的功能模块、改善系统性能等方面。开发团队也需要在开发过程中遵循开源社区的原则,开展合作、共同开发和分享经验和知识。 测试是openeuler大作业中非常关键的一部分。开发团队需要运用各种测试手段,对系统进行全面测试。这包括集成测试、性能测试、安全测试等。测试的目的是确保系统具有出色的性能和稳定性,满足用户的需求和期望。 优化也是openeuler大作业中重要的一环。开发团队需要对系统进行优化,以提高其性能和稳定性。这可以通过代码优化、内核优化、硬件优化等方式进行。优化的目的是使系统更加高效、稳定,更好地满足用户需求。 总之,openeuler大作业是一个综合性的工作,需要开发团队在系统开发、测试和优化方面进行全面的协作和合作。只有通过不断的努力和改进,才能使openeuler操作系统成为具有竞争力的操作系统之一,为用户带来更好的体验。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值