Harbor 镜像仓库

news2024/9/22 7:15:07

目录

一、Harboar概述

1.1 什么是 Harbor

1.2 Harbor优势

1.3 Harbor构成

1.4 Harbor的误区

二、Harbor 安装(http)

2.1 两种方式

2.2 具体安装步骤

2.2.1 先安装Docker和Docker Compose

2.2.2 下载Harbor

2.2.3 harbor.yml 的hostname

2.2.8 镜像推送

三、Harbor部署Https

3.1 生成SSL证书

3.2 Harbor启用HTTPS

3.3 重新配置并部署Harbor

3.4 将数字证书复制到Docker主机


一、Harboar概述


1.1 什么是 Harbor

  • Harbor 是 VMware 公司开源的企业级 Docker Registry 项目,其目标是帮助用户迅速搭建一个企业级的 Docker Registry 服务。
  • Harbor以 Docker 公司开源的 Registry 为基础,提供了图形管理 UI 、基于角色的访问控制(Role Based AccessControl) 、AD/LDAP 集成、以及审计日志(Auditlogging) 等企业用户需求的功能,同时还原生支持中文。
  • Harbor 的每个组件都是以 Docker 容器的形式构建的,使用 docker-compose 来对它进行部署。用于部署 Harbor 的 docker-compose 模板位于 harbor/docker-compose.yml。

1.2 Harbor优势

  • 基于角色控制:用户和仓库都是基于项目进行组织的,而用户在项目中可以拥有不同的权限。
  • 基于镜像的复制策略:镜像可以在多个Harbor实例之间进行复制(同步)。
  • 支持 LDAP/AD:Harbor 可以集成企业内部已有的 AD/LDAP(类似数据库的一张表),用于对已经存在的用户认证和管理。
  • 镜像删除和垃圾回收:镜像可以被删除,也可以回收镜像占用的空间。
  • 图形化用户界面:用户可以通过浏览器来浏览,搜索镜像仓库以及对项目进行管理。
  • 审计管理:所有针对镜像仓库的操作都可以被记录追溯,用于审计管理。
  • 支持 RESTful API:RESTful API 提供给管理员对于 Harbor 更多的操控, 使得与其它管理软件集成变得更容易。
  • Harbor和docker registry的关系:Harbor实质上是对docker registry做了封装,扩展了自己的业务模板。

1.3 Harbor构成


Harbor 在架构上主要有 Proxy、Registry、Core services、Database(Harbor-db)、Log collector(Harbor-log)、Job services 六个组件。

官 方 :Harbor

Github:https://github.com/goharbor/harbor

1.4 Harbor的误区

误区一: Harbor是负责存储容器镜像的 (Harbor是镜像仓库,那么它就应当是存储镜像的)
其实关于镜像的存储,Harbor使用的是官方的docker registry服务去完成,至于registry是用本地存储或者s3都是可以的,Harbor的功能是在此之上提供用户权限管理、镜像复制等功能,提高使用的registry的效率。

误区二:Harbor镜像复制是存储直接复制 (镜像的复制,很多人以为应该是镜像分层文件的直接拷贝)
其实Harbor镜像复制采用了一个更加通用、高屋建瓴的做法,通过docker registry 的API去拷贝,这不是省事,这种做法屏蔽了繁琐的底层文件操作、不仅可以利用现有docker registry功能不必重复造轮子,而且可以解决冲突和一致性的问题。


二、Harbor 安装(http)


2.1 两种方式

• 在线安装:从Docker Hub下载Harbor相关镜像,因此安装软件包非常小

• 离线安装:安装包包含部署的相关镜像,因此安装包比较大

2.2 具体安装步骤

2.2.1 先安装Docker和Docker Compose

https://github.com/docker/compose/releases

[root@offline-client harbor]# ll
total 500940
-rw-r--r-- 1 root root  12254032 May 15 19:02 docker-compose-Linux-x86_64
-rw-r--r-- 1 root root 500705880 May 15 18:45 harbor-offline-installer-v2.0.0.tgz
[root@offline-client harbor]# 
[root@offline-client harbor]# 
[root@offline-client harbor]# mv  docker-compose-Linux-x86_64 /usr/bin/docker-compose
[root@offline-client harbor]# chmod +x /usr/bin/docker-compose 
[root@offline-client harbor]# 

2.2.2 下载Harbor

使用 tar 包的安装离线安装,下载上传到服务器。

https://github.com/goharbor/harbor/archive/refs/tags/v2.5.0.tar.gz

## 使用离线下载的 tar包安装
[root@offline-client harbor]# docker-compose --help
[root@offline-client harbor]# ll
total 491056
-rw-r--r-- 1 root root      3361 May 11  2020 common.sh
-rw-r--r-- 1 root root 502808042 May 11  2020 harbor.v2.0.0.tar.gz
-rw-r--r-- 1 root root      7816 May 11  2020 harbor.yml.tmpl
-rwxr-xr-x 1 root root      2523 May 11  2020 install.sh
-rw-r--r-- 1 root root     11347 May 11  2020 LICENSE
-rwxr-xr-x 1 root root      1856 May 11  2020 prepare
[root@offline-client harbor]# 
[root@offline-client harbor]# cp harbor.yml.tmpl harbor.yml
[root@offline-client harbor]# 
[root@offline-client harbor]# 

2.2.3 harbor.yml 的hostname

先注释掉 https 的连接方式

服务器登录成功, 输入用户名和密码,可以创建客户分配对应的项目权限

进入项目,点击镜像仓库 我们可以看到对应的镜像推送命令

2.2.8 镜像推送

查看是否推送成功


三、Harbor部署Https


3.1 生成SSL证书

cfssl 下载地址:harbor-https-cfssl生成证书_harbor证书生成-kubernetes文档类资源-CSDN下载

分别执行 cfssl.sh 和 certs.sh 脚本 生成证书。"harbor.winnerinf.com"仓库地址换成自己的。

### 下面的证书生成工具可以自己下载,并移动到 /usr/bin目录
[root@docker-harbor ca]# cat cfssl.sh 
wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64
wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64
wget https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64
chmod +x cfssl*
mv cfssl_linux-amd64 /usr/bin/cfssl
mv cfssljson_linux-amd64 /usr/bin/cfssljson
mv cfssl-certinfo_linux-amd64 /usr/bin/cfssl-certinfo

### 生成相应的证书
[root@docker-harbor ca]# cat certs.sh 
cat > ca-config.json <<EOF
{
  "signing": {
    "default": {
      "expiry": "87600h"
    },
    "profiles": {
      "kubernetes": {
         "expiry": "87600h",
         "usages": [
            "signing",
            "key encipherment",
            "server auth",
            "client auth"
        ]
      }
    }
  }
}
EOF

cat > ca-csr.json <<EOF
{
    "CN": "kubernetes",
    "key": {
        "algo": "rsa",
        "size": 2048
    },
    "names": [
        {
            "C": "CN",
            "L": "Beijing",
            "ST": "Beijing"
        }
    ]
}
EOF

cfssl gencert -initca ca-csr.json | cfssljson -bare ca -

cat > harbor.winnerinf.com-csr.json <<EOF
{
  "CN": "harbor.winnerinf.com",
  "hosts": [],
  "key": {
    "algo": "rsa",
    "size": 2048
  },
  "names": [
    {
      "C": "CN",
      "L": "BeiJing",
      "ST": "BeiJing"
    }
  ]
}
EOF

cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=kubernetes harbor.winnerinf.com-csr.json | cfssljson -bare harbor.winnerinf.com 

3.2 Harbor启用HTTPS

编辑 harbor.yml 启用 https 放开

[root@docker-harbor ca]# pwd
/hadoop/software/harbor/ca
[root@docker-harbor ca]# ll
total 44
-rw-r--r-- 1 root root  294 May 28 12:11 ca-config.json
-rw-r--r-- 1 root root  960 May 28 12:11 ca.csr
-rw-r--r-- 1 root root  212 May 28 12:11 ca-csr.json
-rw------- 1 root root 1679 May 28 12:11 ca-key.pem
-rw-r--r-- 1 root root 1273 May 28 12:11 ca.pem
-rw-r--r-- 1 root root 1022 May 28 11:30 certs.sh
-rwxr-xr-x 1 root root  313 May 28 11:30 cfssl.sh
-rw-r--r-- 1 root root  972 May 28 12:11 harbor.winnerinf.com.csr
-rw-r--r-- 1 root root  193 May 28 12:11 harbor.winnerinf.com-csr.json
-rw------- 1 root root 1679 May 28 12:11 harbor.winnerinf.com-key.pem
-rw-r--r-- 1 root root 1322 May 28 12:11 harbor.winnerinf.com.pem
[root@docker-harbor ca]# 



[root@docker-harbor ca]# vim harbor.yml
https:
port: 443
certificate: /hadoop/software/harbor/ca/harbor.winnerinf.com.pem
private_key: /hadoop/software/harbor/ca/harbor.winnerinf.com-key.pem

3.3 重新配置并部署Harbor

[root@offline-client harbor]# ./prepare
###
[root@offline-client harbor]# docker-compose down
[root@offline-client harbor]# docker-compose up -d
Creating network "harbor_harbor" with the default driver
Creating harbor-log ... done
Creating harbor-portal ... done
Creating harbor-db     ... done
Creating registryctl   ... done
Creating redis         ... done
Creating registry      ... done
Creating harbor-core   ... done
Creating harbor-jobservice ... done
Creating nginx             ... done
[root@offline-client harbor]# 

重启后访问就要使用https访问

3.4 将数字证书复制到Docker主机

此时 如果使用其他的docker主机登录 Harbor ,需要将证书分发到对应的docker主机

登录offline-dn03 docker服务器

[root@offline-dn03 ~]# mkdir /etc/docker/certs.d/harbor.winnerinf.com

登录offline-client docker服务器将证书发送到到offline-dn03 docker服务器

[root@offline-client ssl]# cp harbor.winnerinf.com.pem  harbor.winnerinf.com.crt 
[root@offline-client ssl]# ll
total 48
-rw-r--r-- 1 root root  294 May 15 20:43 ca-config.json
-rw-r--r-- 1 root root  960 May 15 20:43 ca.csr
-rw-r--r-- 1 root root  212 May 15 20:43 ca-csr.json
-rw------- 1 root root 1679 May 15 20:43 ca-key.pem
-rw-r--r-- 1 root root 1273 May 15 20:43 ca.pem
-rw-r--r-- 1 root root 1022 May 15 20:43 certs.sh
-rwxr-xr-x 1 root root  313 May 15 20:43 cfssl.sh
-rw-r--r-- 1 root root 1322 May 15 20:56 harbor.winnerinf.com.crt
-rw-r--r-- 1 root root  972 May 15 20:43 harbor.winnerinf.com.csr
-rw-r--r-- 1 root root  193 May 15 20:43 harbor.winnerinf.com-csr.json
-rw------- 1 root root 1679 May 15 20:43 harbor.winnerinf.com-key.pem
-rw-r--r-- 1 root root 1322 May 15 20:43 harbor.winnerinf.com.pem
[root@offline-client ssl]# 
[root@offline-client ssl]# scp harbor.winnerinf.com.crt offline-dn03:/etc/docker/certs.d/harbor.winnerinf.com/
harbor.winnerinf.com.crt                                                                                                 100% 1322     1.3MB/s   00:00    
[root@offline-client ssl]#

 拷贝到需要访问  harbor的 docker 服务器 就可以 访问 harbor 镜像仓库了。

 

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

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

相关文章

梳理一下我在2022年读过的23本书

作者 | gongyouliu编辑 | gongyouliu2022年我一共看了23本书&#xff0c;比自己之前定的目标——每年看36本书——少了不少。今天特意花大半天时间写一篇文章来整理一下今年看的书&#xff0c;梳理一下自己的思路&#xff0c;也算是留下一份记录。这份书单也希望给大家作为参考…

从这两道题重新理解,JS的this、作用域、闭包、对象

日常开发中&#xff0c;我们经常用到this。例如用Jquery绑定事件时&#xff0c;this指向触发事件的DOM元素&#xff1b;编写Vue、React组件时&#xff0c;this指向组件本身。对于新手来说&#xff0c;常会用一种意会的感觉去判断this的指向。以至于当遇到复杂的函数调用时&…

spring、mybatis、spring-mybatis、springboot-mybatis的配置文件

第一个Spring程序 第一个Mybatis程序 第一个Spring-Mybatis程序 第一个SpringBoot-Mybatis程序 1. Spring程序配置文件 beans.xml&#xff1a;/resources <!--注册一个Bean--><bean id"hello" class"com.kuang.pojo.Hello"><property nam…

03 I2C

特点 两根线 SCL SDA同步、半双工带数据应答支持总线挂载多设备 一主多从 多主多从 两个功能&#xff1a; 读取外设模块指定位置的寄存器写外设模块指定位置的寄存器一个完整的通讯协议一定是在软件和硬件上同时定义的。 硬件 所有的I2C设备的时钟线与数据线都要连在一起设备…

普元技术专家2022历史文章合集

大家好&#xff0c;新年快乐。‍献上2022年历史文章合集&#xff0c;方便你翻阅过去一年里的精华文章。【第一辑】企业服务总线&#xff08;ESB&#xff09;基于ESB的企业服务集成平台建设之道企业服务总线建设之道的探索与研究零代码能力干掉80%开发工作&#xff1a;普元ESB 8…

论文综述——Event-Event Relation Extraction using Probabilistic Box Embedding

Event-Event Relation Extraction using Probabilistic Box Embedding1 任务介绍2 Box Embedding3 BERE模型4 实验5 总结1 任务介绍 事件关系抽取&#xff1a;文本中包含多个事件e1,e2,…,en&#xff0c;识别每个事件对(ei,ej)之间的关系r(ei,ej) 子事件(Subevent)关系抽取&a…

(一)硬件制作--从零开始自制linux掌上电脑(F1C200S) <嵌入式项目>

一、工作环境及项目简介 立创EDA&#xff1a;硬件原理图及PCB绘制。 全志F1C200S&#xff1a;F1C100S内置32MB DDR1内存&#xff0c;F1C200S内置64MB DDR1内存。 原理图&#xff1a;参考开源项目&#xff0c;详见墨云&#xff0c; 详见peng-zhihui。 核心板&#xff1a;四层…

Java8 - Streams flatMap()

文章目录What is flatMap()?Why flat a Stream?DemoWhat is flatMap()? # Stream<String[]> # Stream<Stream<String>> # String[][][[1, 2],[3, 4],[5, 6] ]它由一个 2 级 Stream 或一个二维数组组成 。 在 Java 8 中&#xff0c;我们可以使用 flatMap…

前端工程师leetcode算法面试必备-二分搜索算法(下)

一、287. 寻找重复数 给定一个包含 n 1 个整数的数组 nums&#xff0c;其数字都在 1 到 n 之间&#xff08;包括 1 和 n&#xff09;&#xff0c;可知至少存在一个重复的整数。假设只有一个重复的整数&#xff0c;找出这个重复的数。 1、HashMap 在没有其它附加条件的情况下&…

直属领导和老板都给了我绩效A,HR最后审核时降成了B,平时没有得罪她,她为什么这么做?...

绩效考核时&#xff0c;谁才是最终决定你绩效那个人&#xff1f;一位网友最近遇到了这样一件糟心事&#xff1a;季度绩效&#xff0c;直属领导和老板都给了A&#xff0c;人事最后审核时给降成了B&#xff0c;平时和人事没什么工作交集&#xff0c;按理说没有得罪她&#xff0c;…

Java工具——MySQL介绍与安装

Java工具——MySQL介绍与安装MySQL数据库介绍1. 简介2. MySQL发展历史MySQL数据库安装1. 下载安装包2. 安装3. 配置环境变量MySQL数据库介绍 1. 简介 MySQL是应用最广泛、普及度最高的开源关系型数据库&#xff0c;MySQL由瑞典MySQL AB公司开发&#xff0c;目前属于Oracle旗下…

Opencv 基本操作七 提取两幅图像的重叠区域

使用opencv提取连个图像的重叠区域&#xff0c;其本质就是提取两个图像的特征点&#xff0c;然后对两个图像的特征点进行匹配&#xff0c;根据匹配的特征点计算出透视变换矩阵H&#xff0c;然后根据H即可提取出两个图像的重叠区域。这里要注意的是&#xff0c;普通的opencv库没…

Kali Linux断网攻击

前言 ARP攻击就是通过伪造IP地址和MAC地址实现ARP欺骗&#xff0c;能够在网络中产生大量的ARP通信量使网络阻塞&#xff0c;攻击者只要持续不断的发出伪造的ARP响应包就能更改目标主机ARP缓存中的IP-MAC条目&#xff0c;造成网络中断或中间人攻击。 一句话解释&#xff1a; 断…

2022年总结 | 从初二学生到算法作者的蜕变之路

目录 一年的创作历程 我和 CSDN 在编程竞赛的合作 About CBC 技术社区的发展 夜跑奇遇 About 博客之星 新年致谢 元旦祝福 一年的创作历程 2022年&#xff0c;这一年对于我来说是十分重要的一年。在这一年里&#xff0c;我作为一名初二在校学生&#xff0c;在CSDN上发布…

2003-2021年高铁站开通时间

2003-2021年高铁站开通时间数据 1、时间&#xff1a;2003-2021年 2、指标&#xff1a;高铁站名称、开通时间、所在省份、所在城市、所属线路名称、以及相关备注 3、指标说明&#xff1a; 高速铁路&#xff0c;简称高铁&#xff0c;是指设计标准等级高、可供列车安全高速行驶…

需要提醒你关于 golang 中 map 使用的几点注意事项

日常的开发工作中&#xff0c;map 这个数据结构相信大家并不陌生&#xff0c;在 golang 里面&#xff0c;当然也有 map 这种类型 关于 map 的使用&#xff0c;还是有蛮多注意事项的&#xff0c;如果不清楚&#xff0c;这些事项&#xff0c;关键时候可能会踩坑&#xff0c;我们…

【攻防世界】Web warmup

知识点讲解 这一题主要是利用了include的特性 如果include的文件名中含有“/”&#xff0c;那么它会识别其为一个带目录的文件&#xff0c;只有最后一个“/”后的字符串对应的文件会被包含&#xff0c;而前面的字符串都只是在指定目录 意思是&#xff0c;如果我们的payload是这…

ArcGIS基础实验操作100例--实验36创建特征线约束TIN

本实验专栏参考自汤国安教授《地理信息系统基础实验操作100例》一书 实验平台&#xff1a;ArcGIS 10.6 实验数据&#xff1a;请访问实验1&#xff08;传送门&#xff09; 高级编辑篇--实验36 创建特征线约束TIN 目录 一、实验背景 二、实验数据 三、实验步骤 &#xff08;1…

搜狗PR权重在线查询,搜狗PR值查询方法

什么是搜狗PR权重&#xff1f; 搜狗权重(SogouRank)是由搜狗搜索引擎官方发布网页评级数据&#xff0c;搜狗权重是搜狗衡量网页重要性的指标&#xff0c;是机器根据搜狗评级算法自动计算出来的。搜狗权重值从1至10不等&#xff0c;网页评级越高&#xff0c;该网页在搜索中越…

异步通信技术AJAX | AJAX乱码问题、异步与同步、手动封装一个jQuery库

目录 一&#xff1a;快速搞定AJAX&#xff08;第三篇&#xff09; 1、AJAX乱码问题 2、AJAX的异步与同步 3、AJAX代码封装 4、手动封装一个jQuery库 一&#xff1a;快速搞定AJAX&#xff08;第三篇&#xff09; 1、AJAX乱码问题 &#xff08;1&#xff09;发送ajax get 或…