【Docker初探】第十节:部署Docker本地镜像仓库Harbor(Helm方式,Arm64与X86_64)

harbor arm 版镜像编译 编译 harbor arm版镜像 阅读详情

需先安装K8s,请参考:

安装 helm

snap install helm --classic

下载harbor chart

helm repo add harbor https://helm.goharbor.io
helm fetch harbor/harbor --untar

创建harbor证书

# 生成key
mkdir ./harbor-ca
cd ./harbor-ca
openssl genrsa -out tls.key 4096
# 生成crt
openssl req -new -x509 -text -key tls.key -out tls.cert -keyout tls.pem -days 21900 -subj "/CN=harbor.server.com"
# 复制(如用的K8s,需复制到其他Node)
mkdir -pv /etc/docker/certs.d/harbor.server.com:30003/
cp ./* /etc/docker/certs.d/harbor.server.com:30003/
cd ..

创建notary证书

# 生成key
mkdir ./notary-ca
cd ./notary-ca
openssl genrsa -out tls.key 4096
# 生成crt
openssl req -new -x509 -text -key tls.key -out tls.cert -keyout tls.pem -days 21900 -subj "/CN=notary.server.com"
# 复制(如用的K8s,需复制到其他Node)
mkdir -pv /etc/docker/certs.d/notary.server.com:30004/
cp ./* /etc/docker/certs.d/notary.server.com:30004/
cd ..

安装NFS服务

# 安装 nfs-kernel-server
sudo apt-get install nfs-kernel-server
# 修改配置文件
sudo vim /etc/exports
	<共享路径1> *(rw,sync,no_root_squash)     # * 表示允许任何网段 IP 的系统访问该 NFS 目录
	<共享路径2> *(rw,sync,no_root_squash)     # * 表示允许任何网段 IP 的系统访问该 NFS 目录
# 授权
sudo chmod -R 777 <共享路径>
# 启动服务
sudo /etc/init.d/nfs-kernel-server restart
# 测试服务,挂载到 /mnt,不报错就说明服务正常
sudo mount -t nfs <IP地址>:<共享路径> /mnt -o nolock
# 卸载
sudo umount /mnt

创建nfs-client-provisioner

# 下载 deploy/ 下 deployment.yaml, rbac.yaml, class.yaml 3个文件
https://github.com/kubernetes-retired/external-storage/tree/master/nfs-client
# 修改 deployment.yaml 文件
volumes.hostPath.path: <pvc本地路径>
# 创建 Deployment 和 Service(x86_64)
kubectl create -f ./deployment.yaml
# 创建 Deployment 和 Service(arm)
kubectl create -f ./deployment_arm.yaml
# 创建 ClusterRole, ClusterRoleBinding, Role, RoleBinding 设置权限
kubectl create -f ./rbac.yaml
# 创建 StorageClass
kubectl create -f ./class.yaml
# /etc/kubernetes/manifests/kube-apiserver.yaml 文件
	添加"--feature-gates=RemoveSelfLink=false"
# 修改 /etc/docker/daemon.json 文件
	添加:
	{
		"insecure-registries":["harbor.server.com:30003"]
	}

配置harbor(nodePort方式)

cd harbor
vi ./values.yaml
	expose.type: nodePort
	expose.tls.auto.commonName: "harbor.server.com"
	expose.tls.secret.secretName: "<harbor证书文件夹路径>"
	expose.tls.secret.notarySecretName: "<notary证书文件夹路径>"
	externalURL: https://harbor.server.com:30003
	persistence.persistentVolumeClaim.*.storageClass: "managed-nfs-storage" # 配置所有 storageClass
	persistence.imageChartStorage.filesystem.rootdirectory: /export # 与 nfs-provisioner 配置对应
	harborAdminPassword: "<admin登录密码>"
	# arm64需要替换掉所有镜像
	*.image.repository: cocl666/*
	*.image.tag: v2.2.2
	# arm64需要替换掉所有镜像,redis-photon镜像配置
	*.image.repository: harborarm/redis-photon
	*.image.tag: dev

配置harbor(ingress方式)

# 配置大部分与 nodePort 方式一样,修改如下:
	expose.type: ingress
 	ingress.hosts.core: harbor.server.com
	ingress.hosts.notary: notary.server.com
# 下载 ingress-nginx
wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/provider/exoscale/deploy.yaml
# 修改 deploy.yaml
vi ./deploy.yaml
	# 找到 ingress-nginx/templates/controller-service.yaml 部分
	spec.ports.http.nodePort: 30080 # 固定开放端口号
	spec.ports.https.nodePort: 30443 # 固定开放端口号
# 创建 ingress-nginx
kubectl create -f deploy.yaml
# 部署后可以直接用对应端口访问
https://harbor.server.com:30443/

安装kube-flannel(x86_64)

# x86_64
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

安装kube-flannel(arm64)

# arm64
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
vi kube-flannel.yml
	所有image后面标签加上"-arm64"
kubectl apply -f ./kube-flannel.yml

安装harbor

# 安装
kubectl create namespace harbor-helm
helm install my-release . -n harbor-helm
# 查看是否正常启动
kubectl get pods -n harbor-helm
kubectl describe pods -n harbor-helm

修改/etc/hosts文件,添加:

<127.0.0.1或IP地址> harbor.server.com notary.server.com

访问Harbor页面,并新增用户

# 浏览器打开IP
https://127.0.0.1:30003

用新用户登录Docker

# 输入账号与密码
docker login harbor.server.com:30003

修改镜像名称

docker tag <镜像原名称>:<tag> harbor.server.com:30003/<镜像名称>:<tag>

推送镜像

docker push harbor.server.com:30003/<镜像名称>:<tag>

拉取镜像

docker pull harbor.server.com:30003/<镜像名称>:<tag>

卸载(可选)

helm uninstall my-release -n harbor-helm

可能的问题


参考资料

基于ARM架构的Kubernetes集群离线部署KubeSphere4.1.3实战指南 本文提供了一份详尽的实战指南,指导如何在ARM架构的Kubernetes集群中完成KubeSphere 4.1.3的离线部署。文章核心解决了在离线环境下获取ARM64架构专属镜像、配置私有仓库以及通过Helm进行安装的关键挑战,并分享了常见的避坑经验,旨在帮助用户在树莓派、华为鲲鹏等ARM服务器上成功搭建云原生管理平台。 阅读详情

相关推荐

Docker镜像离线批量导入:5分钟完成48个镜像部署

Docker镜像是容器化技术的核心组件,它通过分层存储机制将应用及其依赖打包成可移植的模板。其工作原理基于联合文件系统,允许镜像层在不同容器间共享,从而提升存储效率。这一技术价值在于实现了应用环境的标准化和快速复制,尤其在企业内网、离线部署等网络受限场景下至关重要。通过docker save和docker load命令,可以将镜像打包为tar文件进行离线传输,有效解决网络依赖问题。本文聚焦于批量镜像管理,提供自动化脚本实现从镜像打包到批量导入的全流程方案,涵盖企业级CI/CD流水线和离线环境交付等实际应用场

weixin_34128839的博客 354

镜像仓库harbor(arm)安装部署

macbookprom1pro部署harbor-arm流程

2301_76868495的博客 2250

Agent生产部署四支柱:K3S、Dockerfile、GitHub Actions与ConfigMap

Agent并非仅依赖大模型调用逻辑,其工程化落地本质是构建可交付、可运维的服务系统。从容器化封装、声明式编排、自动化流水线到配置动态管理,核心在于实现环境一致性、行为可复现与运行时弹性。K3S提供轻量但标准的Kubernetes运行时,支撑多Agent服务协同与服务发现;Dockerfile作为镜像构建契约,通过多阶段构建与非root用户隔离保障安全与可复现性;GitHub Actions将部署流程代码化,实现基于Git提交的可信发布与自动回滚;ConfigMap则解耦配置与代码,使同一镜像适配测试、预发、

wjxbj的博客 451

第十篇:《制品管理:从构建产物到可部署镜像》

在 CI/CD 流水线中,“构建”只是第一步,如何管理构建出来的产物(Artifact)才是决定交付效率的关键。一个常见的反模式是:在测试环境构建一次,在生产环境又构建一次——这不仅浪费计算资源,更致命的是,两次构建可能产生不同的结果,让测试变得毫无意义。本文系统讲解制品管理的核心理念“Build Once, Deploy Anywhere”,并深入介绍 JAR/WAR 包、Docker 镜像、Helm Chart 等不同类型制品的版本策略、存储方案和生命周期管理。

qq_45239623的博客 368

GitLab内置容器镜像仓库实战:私有Registry一键启用与CI/CD集成

Docker镜像仓库是云原生应用交付的核心基础设施,其本质是遵循OCI规范的分层存储服务,通过HTTP API实现镜像推送、拉取与清单管理。相比独立部署的Docker Registry或Harbor,GitLab内置Container Registry依托代码仓库元数据,天然实现权限统一、生命周期同步与CI/CD深度集成,显著降低运维复杂度与安全审计成本。该方案特别适用于已采用GitLab进行代码托管的企业级场景,支持自动化镜像构建、语义化标签管理、基于角色的细粒度访问控制(如QA仅pull),并可在Ubu

weixin_34067102的博客 355

GitLab内置Registry实战:构建与推送Docker镜像的权限链与CI集成

Docker镜像仓库是现代CI/CD流水线的核心枢纽,其本质是容器化交付的‘二进制版本控制系统’。它依托认证授权机制(如Token权限、作用域绑定)实现安全分发,通过镜像标签(Tag)、命名空间与构建缓存支撑可复现发布。技术价值在于打通代码提交→自动构建→镜像托管→生产部署的全链路溯源,避免人工传递与跨系统凭证管理。典型应用场景包括内网隔离环境下的私有镜像托管、GitOps驱动的Kubernetes应用交付,以及多架构(amd64/arm64)镜像的统一构建与分发。本文聚焦GitLab原生Container

weixin_34295316的博客 299

01-Docker入门与核心概念

要真正理解Docker,我们不能仅仅停留在"它是一个工具"的层面。任何一项技术的诞生都不是凭空而来的,它是对前人智慧的继承与发展,是对现实问题的回应。容器化技术同样如此——它有着超过四十年的技术积淀,经历了从chroot到LXC,再到Docker和Kubernetes的漫长演进。本章将带你穿越时光,梳理容器化技术的发展脉络,让你明白Docker为什么会出现在这个时代,以及它解决了前人没有解决好的哪些问题。软件交付方式的演进,本质上是人类对计算资源利用率和管理效率不断追求的过程。我们可以将这个过程分为三个主要

Na2SiO3Glue的博客 688

MCP Tool Kit:基于Docker与MCP协议的AI代理协同操作系统

AI Agent并非孤立工具,而是需统一调度、可观测、可运维的生产级能力单元。MCP协议通过容器化抽象与分层设计(传输层Protocol Buffer高效序列化、协调层能力注册与链路追踪、语义层DAG编排),将AI能力封装为符合契约的标准化服务。其核心价值在于解决多Agent系统中协议不一、状态割裂、调试困难等工程化瓶颈,显著提升跨团队协作效率与线上稳定性。结合Docker镜像交付、健康检查、CLI运维工具链及Bridge适配器,MCP Tool Kit天然支持LangChain、LlamaIndex等主流

weixin_34248023的博客 365

harbor arm 版本

版本harbor-v2.4.0-arm64

量子加密系统跨平台部署实战:四种策略解决异构环境迁移难题

在软件工程领域,跨平台部署是保障应用在异构环境中稳定运行的核心能力,其本质是通过抽象与封装实现底层差异的隔离。从技术原理看,关键在于构建平台无关的接口层和统一的应用生命周期管理。这一能力对于量子加密这类融合了量子物理、密码学和网络通信的复杂系统尤为重要,因为其商用化进程必须跨越从实验室单一平台到生产环境多样终端的鸿沟。通过采用基于抽象层的统一API设计,可以从根源上分离业务逻辑与平台实现;结合容器化技术,能将应用及其依赖打包成标准单元,实现环境一致性;而配置驱动和外部化管理,则确保了系统参数能灵活适应不同部

devon2014的博客 336

OpenClaw生产部署指南:AI Agent工作流引擎的稳定落地实践

AI Agent工作流引擎是支撑智能业务自动化的核心运行时基础设施,其本质是将大模型能力封装为可编排、可观测、可热插拔的技能(Skill)服务。理解其运行原理需聚焦于环境隔离、配置治理、技能生命周期与可观测性四大技术支柱。这类引擎的技术价值在于 bridging LLM能力与企业级系统集成——既要求低延迟高可用,又需满足安全审计、灰度发布、指标监控等MLOps硬性标准。典型应用场景包括工单自动解析、ERP/CRM智能协同、多系统Webhook编排等复杂B2B业务流。本文以OpenClaw为例,深入拆解从Py

weixin_30267785的博客 392

RegClient:解锁容器镜像管理的终极武器,告别Docker命令繁琐时代

在容器化开发的世界里,你是否厌倦了重复输入冗长的Docker命令?是否在多个镜像仓库之间同步时感到力不从心?RegClient正是为你解决这些痛点的Go语言神器!这个Docker和OCI Registry客户端库及工具集,将彻底改变你与容器镜像仓库的交互方式。🚀 ## 为什么你需要RegClient而不是原生Docker CLI? 想象一下:你需要从Docker Hub拉取镜像,推送到私有仓

gitblog_00567的博客 377

从etcd校验文件缺失看软件供应链安全:构建二进制完整性验证防线

软件供应链安全是保障现代基础设施稳定性的基石,其核心在于确保从源码到二进制分发的每个环节都具备可验证的完整性。密码学哈希函数(如SHA-256)通过生成唯一“指纹”为文件提供完整性验证,这是防范供应链攻击的关键技术原理。在云原生和DevOps实践中,自动化部署与CI/CD流水线高度依赖可验证的组件,任何分发环节的验证缺失都可能成为攻击入口,导致灾难性风险。本文以etcd这一核心分布式键值存储组件为例,深入探讨当官方发布缺失校验文件时,如何通过构建内部可信源、编写健壮校验脚本及集成至安全流水线,系统化地解决二

weixin_33691817的博客 382

《K8S集群运维指南》

《K8S集群运维指南》

东城绝神 8176

arm64下镜像仓库harbor安装部署文件

centos arm64下,镜像仓库harbor安装部署文件,压缩包内附安装说明文档,根据说明文档进行部署即可。

Harbor-麒麟v10-arm架构镜像包

在国产麒麟系统arm架构服务器上需要部署Harbor的可以试一下

Harbor 源码编译arm版本镜像

总体来说,如果有外网arm服务器,编译镜像的时候,去掉从公网拉取base的基础镜像的选项(PULL_BASE_FROM_DOCKERHUB,因为只有amd的),编译程序会自动给生成所需要的base镜像,然后根据harbor/make/photon下面的组件目录里面的Dokcerfile去拉取依赖生成镜像。dockerhub 里面存的有arm镜像(2.7.3和2.7.3-new一样,区别在于有的基础镜像里面的glibc版本包高低区别),包含构建组件的基础base镜像。

Linux_cui的博客 1381

WSL 相关命令时遇到了 “无法从raw.githubusercontent.com提取分发列表、操作超时

核心问题:国内网络屏蔽raw.githubusercontent.com,导致WSL无法获取发行版列表;最优方案:优先用方案1(手动指定发行版安装),无需改配置,1分钟搞定;永久修复:用方案2(修改hosts),适合需要管理多个WSL发行版的场景;兜底方案:用方案3(手动下载安装包),适配所有网络环境。按以上步骤操作后,你不仅能正常安装WSL,等命令也能正常执行,后续可正常使用WSL搭配Docker Desktop(如切换WSL 2后端),无需再担心网络超时问题。

weixin_39766667的博客 2145
上一篇: 【Docker初探】第九节:部署Docker本地镜像仓库Harbor
下一篇: 【K8s笔记】第一节:生产环境安装,容器运行时
PPHT-H
博客等级 码龄18年 6254粉丝 84原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

PPHT-H

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值