构建Harbor私有镜像库

软硬件环境清单

环境搭建

部署Euler22.0系统,连接xshell:

关闭防火墙和selinux,设置主机名:

systemctl stop firewalld
systemctl disable firewalld
vi /etc/selinux/config

hostnamectl set-hostname harbor
reboot

修改静态IP:

查看IP:

ip a

vi  /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
NAME=ens33
UUID=f57e17a1-16b0-4bbe-aac3-87b544a801fb
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.12.136
PREFIX=24
GATEWAY=192.168.12.2
DNS1=223.5.5.5

重启网络服务:

systemctl restart network 

【注意:

若重启失败

请按照以下步骤进行:

安装 network-scripts:

dnf install network-scripts -y  # openEuler 基于 RHEL 8+/CentOS 8+,默认可能不安装
systemctl enable --now network  # 启用并启动服务
systemctl restart network       # 再次尝试重启

安装并升级所需软件:

yum install vim  tree tar net-tools -y
yum  update  -y

【注意:

若更新不成功,请进行以下操作

再次检查静态IP是否正确:

vi  /etc/sysconfig/network-scripts/ifcfg-ens33

查看当前路由表:

ip route show

缺少静态路由:

ip route add default via 192.168.12.2 dev ens33

最后测试:

yum  update  -y

拍摄快照!!!

【注意:

拍摄完快照后,如果IP地址消失,请进行以下操作:

方案一:

sudo dhclient ens33

方案二:

在静态IP文档里面直接写入命令,要求每次打开时网卡自动开启

ONBOOT=yes  

方案三:

手动启动网卡:

ip link set ens33 up  # 启用网卡

最后记得重启网络服务:

# 如果使用传统 network 服务
systemctl restart network

安装docker

【华为的OpenEurer没有docker源需要从官方下载】

添加docker-ce 源信息:

yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

修改docker-ce源:

sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo   # 更换为阿里开源镜像站源
sed -i 's/$releasever/7/g' /etc/yum.repos.d/docker-ce.repo
# 由于阿里开源中没有Euler系统版本,但其源自Centos则改为7即可

更新源:

yum  makecache

安装docker-ce:默认安装docker-ce是最新版本

yum install docker-ce  -y

启动服务,查看信息:

systemctl enable --now docker

查看状态:

systemctl status docker 

查看版本详细信息:

docker  version  

配置镜像加速器:

登录华为云:共建智能世界云底座-华为云

华为云--->控制台--->登录[注册]--->登录容器镜像服务控制台--->在左侧导航栏选择“镜像资源 > 镜像中心”--->镜像加速器

vim /etc/docker/daemon.json

{"registry-mirrors": [ "https://8cdf32a387b744b2940801aa00322980.mirror.swr.myhuaweicloud.com" ,"https://docker.1ms.run","https://docker.1panel.live/"]
}
~           
systemctl daemon-reload
systemctl restart docker
docker info 

部署Harbor服务

下载Harbor
wget  https://github.com/goharbor/harbor/releases/download/v2.12.2/harbor-offline-installer-v2.12.2.tgz
tar -xvf harbor-offline-installer-v2.12.2.tgz 

配置HarBor:

cd harbor

安装编排工具
yum  install docker-compose  -y

修改配置文件:

将示例文件修改为正常文件:

mv harbor.yml.tmpl harbor.yml

vim harbor.yml 

# Configuration file of Harbor# The IP address or hostname to access admin UI and registry service.
# DO NOT use localhost or 127.0.0.1, because Harbor needs to be accessed by external clients.
hostname: 192.168.88.100              # 修改本机IP,若改为主机名需要做映射# http related config
http:# port for http, default is 80. If https enabled, this port will redirect to https portport: 1021                         # 改为其它端口,防止80端口占用# https related config               # https的内容全部注释掉
# https:# https port for harbor, default is 443# port: 443# The path of cert and key files for nginx# certificate: /your/certificate/path# private_key: /your/private/key/path# enable strong ssl ciphers (default: false)# strong_ssl_ciphers: false
……………………………………
# The initial password of Harbor admin
# It only works in first time to install harbor
# Remember Change the admin password from UI after launching Harbor.
harbor_admin_password: 123         # 登录密码
安装Harbor

安装并启动:

./install.sh  

查看进程:

docker ps  

测试
  • windows浏览器中输入服务端IP:192.168.12.136:1021 来访问管理页面

    • 用户面:admin

    • 密码:123

  • 如下图:

实战

将k8s集群所需的镜像上传到Harbor仓库中:

镜像处理

导入k8s:

cd /
mkdir  /imagescd  /images

导入命令:

docker load -i cni.tar
docker load -i coredns.tar
docker load -i etcd.tar
docker load -i kube-apiserver.tar
docker load -i kube-controller-manager.tar
docker load -i kube-controllers.tar
docker load -i kube-proxy.tar
docker load -i kube-scheduler.tar
docker load -i kuboard.tar
docker load -i node.tar
docker load -i pause.tar

查看导入的:

docker images

镜像重新打标签:

docker tag eipwork/kuboard:v3  192.168.12.136:1021/k8s/kuboard:v3
docker tag registry.aliyuncs.com/google_containers/kube-apiserver:v1.28.0  192.168.12.136:1021/k8s/kube-apiserver:v1.28.0
docker tag registry.aliyuncs.com/google_containers/kube-controller-manager:v1.28.0  192.168.12.136:1021/k8s/kube-controller-manager:v1.28.0
docker tag registry.aliyuncs.com/google_containers/kube-scheduler:v1.28.0  192.168.12.136:1021/k8s/kube-scheduler:v1.28.0
docker tag registry.aliyuncs.com/google_containers/kube-proxy:v1.28.0  192.168.12.136:1021/k8s/kube-proxy:v1.28.0
docker tag registry.aliyuncs.com/google_containers/etcd:3.5.9-0  192.168.12.136:1021/k8s/etcd:3.5.9-0
docker tag registry.aliyuncs.com/google_containers/coredns:v1.10.1  192.168.12.136:1021/k8s/coredns:v1.10.1
docker tag calico/kube-controllers:v3.25.0  192.168.12.136:1021/k8s/calico/kube-controllers:v3.25.0
docker tag calico/cni:v3.25.0  192.168.12.136:1021/k8s/calico/cni:v3.25.0
docker tag calico/node:v3.25.0  192.168.12.136:1021/k8s/calico/node:v3.25.0
docker tag registry.aliyuncs.com/google_containers/pause:3.9  192.168.12.136:1021/k8s/pause:3.9

docker images

设置私有镜像库
vim  /etc/docker/daemon.json
"insecure-registries": ["http://192.168.12.136:1021"]

重启docker服务:

systemctl restart docker

【注意:这里出现了问题没有成功启动,查看原因:

systemctl stop  docker

少了逗号:

vim  /etc/docker/daemon.json
{"registry-mirrors": [ "https://8cdf32a387b744b2940801aa00322980.mirror.swr.myhuaweicloud.com" ,"https://docker.1ms.run","https://docker.1panel.live/"] ,"insecure-registries": ["http://192.168.12.136:1021"]}
~                           

修改后,顺利启动docker:

管理服务

重启HarBor:

cd  /harbor
docker compose restart

登录Harbor:

docker login 192.168.12.136:1021

推送镜像到Harbor:

docker  push  192.168.12.136:1021/k8s/kuboard:v3
docker  push  192.168.12.136:1021/k8s/kube-apiserver:v1.28.0
docker  push  192.168.12.136:1021/k8s/kube-controller-manager:v1.28.0
docker  push  192.168.12.136:1021/k8s/kube-scheduler:v1.28.0
docker  push  192.168.12.136:1021/k8s/kube-proxy:v1.28.0
docker  push  192.168.12.136:1021/k8s/etcd:3.5.9-0
docker  push  192.168.12.136:1021/k8s/coredns:v1.10.1
docker  push  192.168.12.136:1021/k8s/calico/kube-controllers:v3.25.0
docker  push  192.168.12.136:1021/k8s/calico/cni:v3.25.0 
docker  push  192.168.12.136:1021/k8s/calico/node:v3.25.0
docker  push  192.168.12.136:1021/k8s/pause:3.9

查看推好的k8s:

机器重启后需要执行下列操作,harbor才会就绪:

cd  /harbor

重启docker:

systemc	restart docker

重启HarBor:

docker compose restart

记得拍摄快照!!!

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

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

相关文章

分布式缓存:缓存设计中的 7 大经典问题_缓存失效、缓存穿透、缓存雪崩

文章目录 缓存全景图Pre缓存设计中的 7 大经典问题一、缓存失效1. 问题描述2. 原因分析3. 业务场景4. 解决方案 二、缓存穿透1. 问题描述2. 原因分析3. 业务场景4. 解决方案缓存空结果BloomFilter 过滤BloomFilter 原理简述 三、缓存雪崩1. 问题描述2. 原因分析3. 业务场景4. 解…

Mysql差异备份与恢复

1.练习差异备份 差异备份:备份完全备份后,新产生的数据。 在192.168.88.50主机完成差异备份 步骤一:练习差异备份//周一完全备份 mysql> select * from test.one; --------------------- | name | age | sex | ------------------…

【Fargo】razor框架调用mediasoup的发送和接收能力

功能进行拆分,创建独立的发送和接收线程,并实现跨线程的数据传递。创建一个简化的主函数,展示如何使用这些新的接口线程隔离是通过包队列实现的,实际上可以用webrtc的post 跨线程机制? 需求 主要有两个需求:启动接收线程接收数据的接口 启动发送线程,但是数据来自于sim_…

C++——volatile

Cvolatile关键字 volatile是C中的一个关键字,用于修饰变量,表示该变量的值可能会在程序的控制之外被改变。它主要告诉编译器不要对这个变量进行优化,确保每次访问变量时都从实际存储位置读取最新值,而不是依赖寄存器中的缓存值。…

搭建自己的语音对话系统:开源 S2S 流水线深度解析与实战

网罗开发 (小红书、快手、视频号同名) 大家好,我是 展菲,目前在上市企业从事人工智能项目研发管理工作,平时热衷于分享各种编程领域的软硬技能知识以及前沿技术,包括iOS、前端、Harmony OS、Java、Python等…

qt浏览文件支持惯性

#include <QApplication> #include <QListWidget> #include <QScroller> #include <QScrollerProperties>int main(int argc, char *argv[]) {QApplication app(argc, argv);// 创建列表控件并添加示例项QListWidget listWidget;for (int i 0; i <…

路径规划算法BFS/Astar/HybridAstar简单实现

借鉴本文所述代码简单实现一下BFS&#xff0c;Astar和HybridAstar路径规划算法&#xff0c;用于辅助理解算法原理。 代码在这里&#xff0c;画图用到了matplotlibcpp库&#xff0c;需要先装一下&#xff0c;然后直接在文件目录下执行如下代码即可运行&#xff1a; mkdir build…

get_the_category() 和 get_the_terms() 的区别

get_the_category() 和 get_the_terms() 是WordPress中用于获取文章分类的两个函数&#xff0c;但它们之间存在一些关键差异&#xff1a; get_the_category() 特定于分类&#xff1a;get_the_category() 函数专门用于获取文章的分类(category)。它返回一个包含所有分类对象的…

RocketMq的消息类型及代码案例

RocketMQ 提供了多种消息类型&#xff0c;以满足不同业务场景对 顺序性、事务性、时效性 的要求。其核心设计思想是通过解耦 “消息传递模式” 与 “业务逻辑”&#xff0c;实现高性能、高可靠的分布式通信。 一、主要类型包括 普通消息&#xff08;基础类型&#xff09;顺序…

maxkey单点登录系统

github地址 https://github.com/MaxKeyTop/MaxKey/blob/master/README_zh.md 1、官方镜像 https://hub.docker.com/u/maxkeytop 2、MaxKey:Docker快速部署 参考地址&#xff1a; Docker部署 | MaxKey单点登录认证系统 拉取docker脚本MaxKey: Dromara &#x1f5dd;️MaxK…

基于AI生成测试用例的处理过程

基于AI生成测试用例的处理过程是一个结合机器学习、自然语言处理&#xff08;NLP&#xff09;和领域知识的系统性流程。以下是其核心步骤和关键技术细节&#xff0c;以帮助理解如何利用AI自动化生成高效、覆盖全面的测试用例。 1. 输入分析与需求建模 目标 将用户需求、系统文…

《Java vs Go vs C++ vs C:四门编程语言的深度对比》

引言​​ 从底层硬件操作到云端分布式系统&#xff0c;Java、Go、C 和 C 四门语言各自占据不同生态位。本文从​​设计哲学​​、​​语法范式​​、​​性能特性​​、​​应用场景​​等维度进行对比&#xff0c;为开发者提供技术选型参考。 一、​​设计哲学与历史定位​​…

无损提速黑科技:YOLOv8+OREPA卷积优化方案解析(原理推导/代码实现/调参技巧三合一)

文章目录 一、OREPA核心思想与创新突破1.1 传统重参数化的局限性1.2 OREPA的核心创新二、OREPA实现原理与数学推导2.1 卷积核分解策略2.2 动态融合公式三、YOLOv8集成实战(完整代码实现)3.1 OREPA卷积模块定义3.2 YOLOv8模型集成3.3 训练与推理配置四、性能对比与实验分析4.1…

RestTemplate 发送的字段第二个大写字母变成小写的问题探究

在使用RestTemplate 发送http 请求的时候&#xff0c;发现nDecisonVar 转换成了ndecisonVar ,但是打印日志用fastjson 打印的没有问题&#xff0c;换成jackson 打印就有问题。因为RestTemplate 默认使用的jackson 作为json 序列化方式&#xff0c;导致的问题&#xff0c;但是为…

C#核心概念解析:析构函数、readonly与this关键字

&#x1f50d; 析构函数&#xff1a;资源清理的最后防线 核心作用 析构函数&#xff08;~ClassName&#xff09;在对象销毁前执行&#xff0c;专用于释放非托管资源&#xff08;如文件句柄、非托管内存&#xff09;。托管资源&#xff08;如.NET对象&#xff09;由GC自动回收…

FFmpeg中使用Android Content协议打开文件设备

引言 随着Android 10引入的Scoped Storage&#xff08;分区存储&#xff09;机制&#xff0c;传统的文件访问方式发生了重大变化。FFmpeg作为强大的多媒体处理工具&#xff0c;也在不断适应Android平台的演进。本文将介绍如何在FFmpeg 7.0版本中使用Android content协议直接访…

vue——v-pre的使用

&#x1f530; 基础理解 ✅ 什么是 v-pre&#xff1f; v-pre 是一个跳过编译的 Vue 指令。 它告诉 Vue&#xff1a;“这个元素和其子元素中的内容不要被编译处理&#xff0c;按原样输出。” ✅ 使用场景&#xff1a; 展示原始的 Mustache 插值语法&#xff08;{{ xxx }}&a…

PyTorch中TensorBoardX模块与torch.utils.tensorboard模块的对比分析

文章目录 说明1. 模块起源与开发背景2. 功能特性对比3. 安装与依赖关系4. 性能与使用体验5. 迁移与兼容性策略6. 最佳实践与建议7. 未来展望8. 结论实际相关信息推荐资源 说明 TensorBoard&#xff1a;独立工具&#xff0c;只需安装tensorboard。TensorFlow&#xff1a;非必需…

单片机中断系统工作原理及定时器中断应用

文件目录 main.c #include <REGX52.H> #include "TIMER0.H" #include "KEY.H" #include "DELAY.H"//void Timer0_Init() { // TMOD 0x01; // TL0 64536 % 256; // TH0 64536 / 256; // ET0 1; // EA 1; // TR0 1; //}unsigned char…

Python爬虫实战:研究Portia框架相关技术

1. 引言 1.1 研究背景与意义 在大数据时代,网络数据已成为企业决策、学术研究和社会分析的重要资源。据 Statista 统计,2025 年全球数据总量将达到 175ZB,其中 80% 以上来自非结构化网络内容。如何高效获取并结构化这些数据,成为数据科学领域的关键挑战。 传统爬虫开发需…