当前位置: 首页 > news >正文

CentOS 搭建 Harbor 镜像仓库(图文详解)

本文目录

  • 1. 下载 Harbor 安装包
  • 2. 解压
  • 3. 修改配置文件
  • 4. 安装 Harbor
  • 5. 修改 docker 配置
  • 6. docker 登录方式
  • 7. 访问 Harbor Web 界面
  • 8. 创建证书
  • 9. 生成证书
  • 10. 更新配置
  • 11. 网页登录

说明:在搭建 Harbor 镜像仓库之前,虚拟机要先安装 docker 和 docker-compose。

本文接下来的命令都是在 root 身份下运行的。

1. 下载 Harbor 安装包

  • 直接下载可以使用以下命令:
    wget https: /github.com/goharbor/harbor/releases/download/v2.8.2/harbor-offline-installer-v2.8.2.tgz
    
    直接在虚拟机内部执行上面这条命令的话,下载速度会很慢,所以此处通过外部主机下载后共享文件夹导入虚拟机中。

2. 解压

  • 输入以下命令进行解压:
    tar -xvf harbor-offline-installer-v2.8.2.tgz
    

在这里插入图片描述

  • 新建一个目录,将 harbor 目录下的文件移动到该目录下。依次输入以下命令:

    mkdir /opt/harbor
    mv harbor/* /opt/harbor
    cd /opt/harbor
    

在这里插入图片描述

3. 修改配置文件

  • 复制一份 harbor 的配置文件并改名 harbor.yml,输入以下命令:

    cp -ar harbor.yml.tmpl harbor.yml
    
  • 进入配置文件,输入以下命令:

    vim harbor.yml
    

在这里插入图片描述

  • 修改 hostnameport

    hostname: 192.168.138.130 # 这里改为虚拟机的 IP
    port: 85 # 开放端口
    # 注释 https 相关部分,从13行开始
    

在这里插入图片描述

4. 安装 Harbor

  • 编辑完配置文件,接下来在 harbor 目录下安装 Harbor。

  • Harbor 安装环境预处理,输入以下命令:

    ./prepare
    

在这里插入图片描述

  • 安装并启动 Harbor,输入以下命令:

    ./install.sh
    

在这里插入图片描述

如上图所示,安装并启动成功!

  • 检查是否安装成功(应该是启动9个容器)。输入以下命令:

    docker-compose ps
    

在这里插入图片描述

5. 修改 docker 配置

  • 进入配置文件,输入以下命令:

    vim /etc/docker/daemon.json
    
  • 在配置文件中添加以下内容(添加阿里云镜像下载地址):

    {
    "registry-mirrors": ["https://ov31ob13.mirror.aliyuncs.com"]
    }
    
  • 重启 docker 和 harbor 容器,依次输入以下命令:

    systemctl restart docker
    docker-compose stop
    docker-compose up -d
    

在这里插入图片描述

6. docker 登录方式

  • 输入以下命令进行登录:

    docker login 192.168.138.130:85
    

    然后输入用户名(admin)和密码(Harbor12345)。

  • 或者直接输入下面这条命令登录即可:

    docker login -u admin -p Harbor12345 192.168.138.130:85
    

7. 访问 Harbor Web 界面

  • 在浏览器输入以下地址:

    http://192.168.138.130:85
    
  • 输入用户名和密码,用户名和密码均为默认值:

    用户名:admin
    密码:Harbor12345
    

在这里插入图片描述

至此,CentOS7 搭建 Harbor(http)镜像仓库完成!

接下来在上面操作的基础上搭建 Harbor(https)镜像仓库。

8. 创建证书

  • 在工作目录下创建证书存放目录,依次输入以下命令:

    mkdir ssl
    cd ssl
    

    配置 Harbor 通过 https 访问时均在新建的 ssl 目录下进行操作。

在这里插入图片描述

  • ssl 目录下输入以下命令:

    openssl req -newkey rsa:4096 -nodes -sha256 -keyout ca.key -x509 -days 3650 -out ca.crt
    

    注:输入该命令后,一路回车5次直至出现 Common Name 输入(因为是 CA,可不输入 IP 或域名):Harbor Cert Root CA Harbor,为自定义名称。

下面是对该命令的解释:这个命令用于使用 OpenSSL 生成自签名的根证书(Root Certificate)。

  • openssl:表示要使用 OpenSSL 命令。
  • req:表示生成证书签署请求(Certificate Signing Request)。
  • -newkey rsa:4096:指定生成一个新的 RSA 私钥,并且密钥长度为 4096 位。
  • -nodes:指定生成私钥时不进行加密,以便后续在没有密码的情况下使用该私钥。
  • -sha256:使用 SHA256 算法生成证书的摘要。
  • -keyout ca.key:指定将生成的私钥保存为 ca.key 文件。
  • -x509:生成自签名的根证书。
  • -days 3650:指定生成的根证书的有效期为 3650 天(10年)。
  • -out ca.crt:指定将生成的根证书保存为 ca.crt 文件。

执行这个命令后,将获得一个名为 ca.key 的私钥文件和一个名为 ca.crt 的自签名根证书文件。这个根证书可以用于签署其他证书,以建立自己的证书颁发机构(CA)来签发更多的证书。

9. 生成证书

  • 生成证书签名请求。在 ssl 目录下输入以下命令:

    openssl req -newkey rsa:4096 -nodes -sha256 -keyout harbor.key -out harbor.csr
    

    注:输入该命令后,一路回车5次出现 Common Name 输入 IP 或域名,此处为:192.168.138.130。

在这里插入图片描述

如上图所示,下面是可能会遇到的交互提示及其相应的解释:

  • Country Name (2 letter code) [XX]::输入您所在国家的两个字母的国家代码,例如中国为 “CN”、美国为 “US”。
  • State or Province Name (full name) []::输入您所在的省份或州的全名。
  • Locality Name (eg, city) [Default City]::输入您所在的城市名称。
  • Organization Name (eg, company) [Default Company Ltd]::输入您的组织或公司的名称。
  • Organizational Unit Name (eg, section) []::输入您的组织或公司的部门名称,可留空。
  • Common Name (eg, your name or your server's hostname) []::输入您或您的服务器的主机名。如果您正在生成证书签署请求,可以使用一个描述性的名称,或者使用您的服务器的域名(如果有)。
  • Email Address []::输入与证书相关的电子邮件地址,可留空。
  • A challenge password []::留空,直接按回车键继续。
  • An optional company name []::可留空,直接按回车键继续。
  • 新建文件,在 ssl 目录下输入以下命令:

    touch extfile.cnf
    
  • 进入文件,输入以下命令:

    vim extfile.cnf
    
  • 进入该文件后添加以下内容:

    subjectAltName = @alt_names
    extendedKeyUsage = serverAuth
    [alt_names]
    # 域名,如有多个用DNS.2,DNS.3…来增加
    DNS.1 = xxx.harbor.cn
    DNS.2 = *.harbor.cn
    # IP地址, 服务器的ip
    IP.1 = 192.168.138.130
    IP.2 = 127.0.0.1
    
  • ssl 目录下输入以下命令:

    openssl x509 -req -days 3650 -in harbor.csr -CA ca.crt -CAkey ca.key -CAcreateserial -extfile extfile.cnf -out harbor.crt
    

在这里插入图片描述

10. 更新配置

  • 查看 harbor.crtharbor.key 文件所在的路径,配置文件时需要用。

在这里插入图片描述

  • 编辑 harbor.yml 文件,修改该文件时需要注意缩进。修改内容如下:

    cd harbor
    vim harbor.yml
    

在这里插入图片描述

  • harbor 目录下执行命令更新配置,使 yml 配置文件生效。依次输入以下命令:

    ./prepare
    ./install.sh
    

11. 网页登录

  • 在登录前关闭虚拟机防火墙(或者防火墙在开启状态下允许444端口)。登录地址如下:

    https://192.168.138.130:444
    

在这里插入图片描述

  • 用户名和密码不变,还是和前面 Harbor(http)一致。

相关文章:

CentOS 搭建 Harbor 镜像仓库(图文详解)

本文目录 1. 下载 Harbor 安装包2. 解压3. 修改配置文件4. 安装 Harbor5. 修改 docker 配置6. docker 登录方式7. 访问 Harbor Web 界面8. 创建证书9. 生成证书10. 更新配置11. 网页登录 说明:在搭建 Harbor 镜像仓库之前,虚拟机要先安装 docker 和 dock…...

【云原生】k8s组件架构介绍与K8s最新版部署

个人主页:征服bug-CSDN博客 kubernetes专栏:kubernetes_征服bug的博客-CSDN博客 目录 1 集群组件 1.1 控制平面组件(Control Plane Components) 1.2 Node 组件 1.3 插件 (Addons) 2 集群架构详细 3 集群搭建[重点] 3.1 mi…...

你真的了解什么是生成式AI吗?

最近正好有这样的机会,让我给一群非技术人士介绍生成式AI,忙忙碌碌了一阵子,结果发现受众还是未能理解什么是生成式AI,到底和之前的AI有什么区别。因此希望此篇能够帮助普通人真正理解生成式AI,有个直观印象。 人工智…...

Linux--高级IO

高级IO 1. 五种IO模型 阻塞IO:在内核将数据准备好之前,系统调用会一直等待。 所有的套接字,默认都是阻塞方式。阻塞IO是最常见的IO模型。 非阻塞IO:如果内核还未将数据准备好,系统调用仍然会直接返回,并…...

【C# 基础精讲】C# 开发环境搭建(Visual Studio等)

安装C#开发环境是开始学习和使用C#编程的第一步。目前,最常用的C#开发环境是Microsoft Visual Studio,它是一套强大的集成开发环境(IDE),提供了丰富的工具和功能,使开发C#应用程序变得更加便捷。以下是安装…...

谷粒商城第九天-解决商品品牌问题以及前后端使用检验框架检验参数

目录 一、总述 二、商品分类问题 三、前端检验 四、后端检验 五、总结 一、总述 在完成完商品分类的时候,后来测试的时候还是发现了一些问题,现在将其进行解决,问题如下: 1. 取消显示的时候,如果取消了显示&…...

Java8函数式接口

在工作中我需要,我需要递归处理复杂嵌套的JSON字符串,然后处理方法有多种,为了代码通用性,我想要把处理方法当作参数,传入到函数中,然后根据不同的处理方法处理字符串。通过查资料得知,可以使用…...

.Net6 Web Core API --- Autofac -- AOP

目录 一、AOP 封装 二、类拦截 案例 三、接口拦截器 案例 AOP拦截器 可开启 类拦截器 和 接口拦截器 类拦截器 --- 只有方法标注 virtual 标识才会启动 接口拦截器 --- 所有实现接口的方法都会启动 一、AOP 封装 // 在 Program.cs 配置 builder.AddAOPExt();//自定义 A…...

RocketMQ基本概念和高级原理

基础概念 消息模型 RocketMQ 主要由 Producer、Broker、Consumer 三部分组成,其中 Producer 负责生产消息,Consumer 负责消费消息,Broker 负责存储消息。Broker 在实际部署过程中对应一台服务器,每个 Broker 可以存储多个 Topic…...

小白到运维工程师自学之路 第六十六集 (docker 网络模型)

一、概述 Docker网络模型是指Docker容器在网络中的通信方式和组织结构。Docker容器通过网络连接,使得容器之间可以相互通信,并与主机和外部网络进行交互。 在Docker中,有几种不同的网络模型可供选择: 1、主机模式(H…...

Go和Java实现建造者模式

Go和Java实现建造者模式 下面通过一个构造人身体不同部位的案例来说明构造者模式的使用。 1、建造者模式 建造者模式使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了 一种创建对象的最佳方式。 一个 Builder 类会…...

AutoSAR系列讲解(实践篇)11.6-服务映射(自顶向下)

目录 一、配置Service Needs 二、配置Cfg同步 我们在下一节的实验课中讲解这里的具体配置流程,本节主要讲一下这些配置的大致流程和配置项的作用。NvBlockSwComponents是一个可选项, 我们这里开始不使用NvBlockSwComponents,将我们的Application SWC直接和NvM通过C/S连接起…...

EXCEL, 用if({1,0,0} ...) 实现把给定的区域,输出为任意你想要的矩阵,数组区域!

目录 1 原材料:这样的一个区域 工具 if({1,0,0}) 数组公式 1.1 原始数据 1.2 原理 if(0/1,t-value,f-value)---变形--->if({},range1,range2) 1.2.1 if(0/1,t-value,f-value)---变形--->if({},range1,range2) 1.2.2 原理1: if 数组原理&#…...

c++实现Qt对象树机制

文章目录 对象树是什么使用对象树的好处使用c实现对象树 对象树是什么 我们常常听到 QObject 会用对象树来组织管理自己&#xff0c;那什么是对象树&#xff1f;  这个概念非常好理解。因为 QObject 类就有一个私有变量 QList<QObject *>&#xff0c;专门存储这个类的子…...

骨传导蓝牙耳机排行榜,精选五款排名最靠前的耳机

不知道大家在挑选耳机的时候会考虑什么&#xff1f;有些人会考虑耳机的功能、有些会考虑价格&#xff0c;还有的会考虑品牌等因素&#xff0c;但是综合下来&#xff0c;我们作为消费者无非是想要一款音质很好&#xff0c;而佩戴又很适合我们的耳机&#xff5e;我们年轻人作为耳…...

JDBC用法小结

JDBC用法小结 本文实例总结了JDBC的用法。分享给大家供大家参考。具体分析如下&#xff1a; DriverManger:驱动管理器类 要操作数据库&#xff0c;必须先与数据库创建连接&#xff0c;得到连接对象 public static Connection getConnection(String url, String username,Str…...

MySQL 数据表在什么情况下容易损坏

服务器突然断电导致数据文件损坏。强制关机&#xff0c;没有先关闭 MySQL 服务等。 表损坏的原因分析 以下原因是导致 mysql 表毁坏的常见原因&#xff1a; 1、 服务器突然断电导致数据文件损坏。 2、 强制关机&#xff0c;没有先关闭 mysql 服务。 3、 mysqld 进程在写表时…...

【设计模式——学习笔记】23种设计模式——访问者模式Visitor(原理讲解+应用场景介绍+案例介绍+Java代码实现)

文章目录 案例引入要求传统方案 介绍基本介绍应用场景登场角色尚硅谷版本《图解设计模式》版本 案例实现案例一实现拓展 案例二(个人感觉这个案例较好)实现分析拓展一拓展二拓展三 总结额外知识双重分发 文章说明 案例引入 要求 测评系统需求&#xff1a;将观众分为男人和女人…...

Ubuntu安装MySQL 8.0与Navicat

目录 Ubuntu安装MySQL 8.0 1、更新软件包列表 2、安装 MySQL 8.0 3、启动 MySQL 服务 5、确保MySQL服务器正在运行 5、root 用户的密码 6、登录MySQL&#xff0c;输入mysql密码 7、MySQL默认位置 Ubuntu安装Navicat 1、下载 Navicat 2、额外的软件包 3、执行命令 U…...

GB28181智慧可视化指挥控制系统之执法记录仪设计探讨

什么是智慧可视化指挥控制系统&#xff1f; 智慧可视化指挥控制平台通过4G/5G网络、WIFI实时传输视音频数据至指挥中心&#xff0c;特别是在有突发情况时&#xff0c;可以指定一台执法仪为现场视频监控器&#xff0c;实时传输当前画面到指挥中心&#xff0c;指挥中心工作人员可…...

Go 语言接口详解

Go 语言接口详解 核心概念 接口定义 在 Go 语言中&#xff0c;接口是一种抽象类型&#xff0c;它定义了一组方法的集合&#xff1a; // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的&#xff1a; // 矩形结构体…...

中医有效性探讨

文章目录 西医是如何发展到以生物化学为药理基础的现代医学&#xff1f;传统医学奠基期&#xff08;远古 - 17 世纪&#xff09;近代医学转型期&#xff08;17 世纪 - 19 世纪末&#xff09;​现代医学成熟期&#xff08;20世纪至今&#xff09; 中医的源远流长和一脉相承远古至…...

《C++ 模板》

目录 函数模板 类模板 非类型模板参数 模板特化 函数模板特化 类模板的特化 模板&#xff0c;就像一个模具&#xff0c;里面可以将不同类型的材料做成一个形状&#xff0c;其分为函数模板和类模板。 函数模板 函数模板可以简化函数重载的代码。格式&#xff1a;templa…...

STM32HAL库USART源代码解析及应用

STM32HAL库USART源代码解析 前言STM32CubeIDE配置串口USART和UART的选择使用模式参数设置GPIO配置DMA配置中断配置硬件流控制使能生成代码解析和使用方法串口初始化__UART_HandleTypeDef结构体浅析HAL库代码实际使用方法使用轮询方式发送使用轮询方式接收使用中断方式发送使用中…...

客户案例 | 短视频点播企业海外视频加速与成本优化:MediaPackage+Cloudfront 技术重构实践

01技术背景与业务挑战 某短视频点播企业深耕国内用户市场&#xff0c;但其后台应用系统部署于东南亚印尼 IDC 机房。 随着业务规模扩大&#xff0c;传统架构已较难满足当前企业发展的需求&#xff0c;企业面临着三重挑战&#xff1a; ① 业务&#xff1a;国内用户访问海外服…...

React核心概念:State是什么?如何用useState管理组件自己的数据?

系列回顾&#xff1a; 在上一篇《React入门第一步》中&#xff0c;我们已经成功创建并运行了第一个React项目。我们学会了用Vite初始化项目&#xff0c;并修改了App.jsx组件&#xff0c;让页面显示出我们想要的文字。但是&#xff0c;那个页面是“死”的&#xff0c;它只是静态…...

21-Oracle 23 ai-Automatic SQL Plan Management(SPM)

小伙伴们&#xff0c;有没有迁移数据库完毕后或是突然某一天在同一个实例上同样的SQL&#xff0c; 性能不一样了、业务反馈卡顿、业务超时等各种匪夷所思的现状。 于是SPM定位开始&#xff0c;OCM考试中SPM必考。 其他的AWR、ASH、SQLHC、SQLT、SQL profile等换作下一个话题…...

React、Git、计网、发展趋势等内容——前端面试宝典(字节、小红书和美团)

React React Hook实现架构、.Hook不能在循环嵌套语句中使用 , 为什么&#xff0c;Fiber架构&#xff0c;面试向面试官介绍&#xff0c;详细解释 用户: React Hook实现架构、.Hook不能在循环嵌套语句中使用 , 为什么&#xff0c;Fiber架构&#xff0c;面试向面试官介绍&#x…...

XXE漏洞知识

目录 1.XXE简介与危害 XML概念 XML与HTML的区别 1.pom.xml 主要作用 2.web.xml 3.mybatis 2.XXE概念与危害 案例&#xff1a;文件读取&#xff08;需要Apache >5.4版本&#xff09; 案例&#xff1a;内网探测&#xff08;鸡肋&#xff09; 案例&#xff1a;执行命…...

Redis——Cluster配置

目录 分片 一、分片的本质与核心价值 二、分片实现方案对比 三、分片算法详解 1. ‌范围分片&#xff08;顺序分片&#xff09;‌ 2. ‌哈希分片‌ 3. ‌虚拟槽分片&#xff08;Redis Cluster 方案&#xff09;‌ 四、Redis Cluster 分片实践要点 五、经典问题解析 C…...