Docker搭建Harbor

news2024/9/21 20:39:47

1.什么是Harbor

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

2.Harbor的特性

1.基于角色控制:用户和仓库都是基于项日进行组织的,而用户在项目中可以拥有不同的权限。

2.基于镜像的复制策略:镜像可以在多个Harbor实例之间进行复制(同步)

3.支持LDAP/AD:Harbor 可以集成企业内部已有的 AD/LDAP(类似数据库的一张表),用于对已经存在的用户认证和管理

4.镜像删除和垃圾回收:镜像可以被删除,也可以回收镜像占用的空间。

5.图形化用户界面:用户可以通过浏览器来浏览,搜索镜像仓库以及对项目进行管理。

6.审计管理:所有针对镜像仓库的操作都可以被记录追溯,用于审计管理。

7.支持 RESTful API:RESTful API 提供给管理员对于 Harbor 更多的操控,使得与其它管理软件集成变得更容易。

8、Harbor和docker registry的关系:Harbor实质上是对docker registry做了封装,扩展了自己的业务模板。

3.Harbor的构成 

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

●Proxy: 是一个 nginx 的前端代理,Harbor 的 Registry、UI、Token 服务等组件,都处在 nginx 反向代理后边。 该代理将来自浏览器、docker clients 的请求转发到后端不同的服务上。

●Registry: 负责储存 Docker 镜像,并处理 Docker push/pull 命令。由于要对用户进行访问控制,即不同用户对 Docker 镜像 有不同的读写权限,Registry 会指向一个 Token 服务,强制用户的每次 Docker pull/push 请求都要携带一个合法的 Token, Registry 会通过公钥对 Token 进行解密验证。

●Core services: Harbor的核心功能,主要提供以下3个服务:
1)UI(harbor-ui): 提供图形化界面,帮助用户管理 Registry 上的镜像(image), 并对用户进行授权。
2)WebHook:为了及时获取Registry 上image 状态变化的情况,在Registry 上配置 Webhook,把状态变化传递给 UI 模块。
3)Token 服务:负责根据用户权限给每个 Docker push/pull 命令签发 Token。Docker 客户端向 Registry 服务发起的请求, 如果不包含 Token,会被重定向到 Token 服务,获得 Token 后再重新向 Registry 进行请求。

●Database(harbor-db):为core services提供数据库服务,负责储存用户权限、审计日志、Docker 镜像分组信息等数据。

●Job services: 主要用于镜像复制,本地镜像可以被同步到远程 Harbor 实例上。

●Log collector(harbor-log): 负责收集其他组件的日志到一个地方。

Harbor 的每个组件都是以 Docker 容器的形式构建的,因此,使用 Docker Compose 来对它进行部署。
总共分为7个容器运行,通过在docker-compose.yml所在目录中执行 docker-compose ps 命令来查看, 名称分别为:nginx、harbor-jobservice、harbor-ui、harbor-db、harbor-adminserver、registry、harbor-log。
其中 harbor-adminserver 主要是作为一个后端的配置数据管理,并没有太多的其他功能。harbor-ui 所要操作的所有数据都通过 harbor-adminserver 这样一个数据配置管理中心来完成。

4.部署 Docker-Compose 服务

1)修改配置文件
Docker-Compose一般在下载docker时已经安装,将他复制到/usr/local/bin/目录即可使用
 
find / -name docker-compose 
cp /usr/libexec/docker/cli-plugins/docker-compose /usr/local/bin/
docker-compose -v   #查看版本

vim harbor.yml

2)启动Harbor 
修改完配置文件后
./install.sh

安装完成后就可以访问页面

3)新建项目

访问级别公开:项目中的镜像所有人都能下载,未登录仓库的用户都能下载

访问级别私有:必须先登录用户,而且必须是项目的成员才能下载

 

4)新建用户 

两个项目中分别添加成员并设置权限

 

 5)上传镜像
vim /etc/docker/daemon.json

systemctl reload docker.service   #重新加载服务
docker info                       

#登陆仓库
docker login -u admin -p Harbor12345 http://192.168.86.90

根据Harbor推送镜像的命令操作 

docker tag centos:7 192.168.86.90/decp/centos7
docker push 192.168.86.90/decp/centos7

Harbor查看
 6)下载镜像

准备一台docker服务器,对接好仓库地址

vim /etc/docker/daemon.json

systemctl reload docker.service

7)私有项目下载镜像 

私有项目直接下载镜像是不成功的,需要先登录才能下载

docker login -u cap -p Cap12345 http://192.168.86.90
docker pull 192.168.86.90/cap/centos7:latest

 

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

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

相关文章

地图项目涉及知识点总结

序:最近做了一个在地图上标记点的项目,用户要求是在地图上显示百万量级的标记点,并且地图仍要可用(能拖拽,能缩放)。调研了不少方法和方案,最终实现了相对流畅的地图系统,加载耗时用…

LLaMA 数据集

LLaMA的训练数据集来源多样,涵盖了多个不同的数据集和预处理步骤。以下是详细的描述: 公开数据来源和预处理 CommonCrawl [67%]: 使用CCNet管道(Wenzek等人,2020年)对2017年至2020年间的五个CommonCrawl转…

基于 Springboot + vue + java 美食分享平台(美食管理系统)

目录 📚 前言 📑摘要 📑操作流程 📚 系统架构设计 📚 数据库设计 💬 E-R表 💬 用户表 💬 美食分享文章表 💬个人博客表 💬 美食分类表 💬 …

如何根据项目需求选择采集卡及相关硬件

在选择适合的采集卡和硬件设备时,尤其是在要求高精度的应用场景中(如压机测试中的1μm位移计),需要综合考虑多个因素。以下是选择硬件的几个关键原则: 1. 精度要求 对于需要高精度的应用,硬件的精度必须能…

Java代码批量处理sql语句

背景:数据源迁移,目标数据源和原始数据源的语法不同,要把建表语句全都改成新的语法。 一个个sql文件去替换实在是麻烦,可以把原始的sql文件放在一个文件夹,然后用程序一跑,改完语法的sql语句就放在新的文件…

口袋奇兵游戏攻略:云手机辅助战锤入侵策略指南!

在《口袋奇兵》中,战锤入侵是一个重要的游戏环节,了解如何有效地参与战锤入侵能够帮助玩家获取更多的资源和提升自己的战力。本文将详细介绍战锤入侵的策略和技巧,帮助玩家在战锤入侵活动中取得更好的成绩。除了找到强力的游戏辅助&#xff0…

miniconda+xinference的大模型推理部署指南

大模型相关目录 大模型,包括部署微调prompt/Agent应用开发、知识库增强、数据库增强、知识图谱增强、自然语言处理、多模态等大模型应用开发内容 从0起步,扬帆起航。 基于Dify的智能分类方案:大模型结合KNN算法(附代码&#xff…

【视觉SLAM】 十四讲ch5习题

1.*寻找一个相机(你手机或笔记本的摄像头即可),标定它的内参。你可能会用到标定板,或者自己打印一张标定用的棋盘格。 参考我之前写过的这篇博客:【OpenCV】 相机标定 calibrateCamera Code来源是《学习OpenCV3》18.…

喜报!CACTER实力入选《嘶吼2024网络安全产业图谱》多项领域

CACTER实力入选多项细分领域 7月16日,嘶吼安全产业研究院正式发布《嘶吼2024网络安全产业图谱》,旨在全面展示网络安全产业的构成及其重要组成部分,探索网络安全产业的竞争格局和发展前景。 CACTER凭借卓越的技术实力和可靠的产品服务&#…

[论文笔记] Pai-megatron-patch cpu-offload 改到 Qwen2

Add MPI Support for tp-comm-overlap and Cpu-Offload for Mcore Distrib… by jerryli1981 Pull Request #283 alibaba/Pai-Megatron-Patch GitHub 以上是在 llama-70B 上实现的 cpu-offload 方法。 下面是在主分支上,仿照 LLaMA-70B,在 Qwen2 上…

手把手教你搭建Docker私有仓库Harbor

1、什么是Docker私有仓库 Docker私有仓库是用于存储和管理Docker镜像的私有存储库。Docker默认会有一个公共的仓库Docker Hub,而与Docker Hub不同,私有仓库是受限访问的,只有授权用户才能够上传、下载和管理其中的镜像。这种私有仓库可以部署…

HarmonyOS工程目录结构

应用级配置文件app.json5 应用唯一标识、版本号、应用图标、应用名称等信息 模块级配置文件module.json5 oh-package.json5 三方库的管理 其他配置 用于编译构建,包括构建配置文件、编译构建任务脚本、混淆规则文件、依赖的共享包信息等。 build-profile.json…

Java学习Day9之数据库链接java

package aboutdb1; import java.sql.*; import java.util.Scanner; public class newDBsystem {private static Connection getConnection() throws Exception {Class.forName("com.mysql.cj.jdbc.Driver"); // 加载MySQL JDBC驱动Connection con DriverManager.get…

阿尔泰科技工业电脑IPC-8363工控机

概述: IPC-8363是一款支持 LGA 1200 Intel 10th/11th Generation Core™ i9/i7/i5/i3, Celeron and Pentium processor 的工业电脑。配置2组独立 SO-DIMM DDR4 2666/2933MHz内存,最大可扩展至128GB。 主要技术指标: 产品图示: 系…

php 小白新手从入门到精通教程(第3版)

前言 PHP(PHP: Hypertext Preprocessor)即“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中。PHP语法学习了C语言,吸纳Java和Perl多个语言的特色发展出自己的特色语法,并根…

qt初入门8:下拉框,输入框模糊查询,提示简单了解 (借助QCompleter)

实现一个简单的模糊查询的逻辑,输入框能提示相关项。 主要借助qt的QCompleter 类( Qt 框架中提供的一个用于自动补全和模糊搜索的类),结合一些控件,比如QComboBox和QLineEdit,实现模糊查询的功能。 1&…

在线实习项目|泰迪智能科技企业级项目学习,暑期大数据人工智能学习

在线实习介绍 实习时间:每个项目周期七周左右 面向对象:大数据、计算机相关专业学生;大三、大四毕业年度学生 在线实习收获 1、获得项目实战技能,积累项目经验 2、获得在线实习证明 项目特点…

能源化工5G防爆终端能给行业带来什么重要作用?

在能源化工领域,5G防爆终端的引入无疑为行业带来了革命性的变革与重要作用。这些集成了先进5G通信技术和防爆设计的高端设备,不仅提升了生产作业的安全性,还极大地增强了运营效率与智能化水平。 高速、低延迟的5G网络为防爆终端提供了前所未有…

安全防御2

实验要求: 实验过程: 7,办公区设备可以通过电信链路和移动链路上网(多对多的NAT,并且需要保留一个公网IP不能用来转换): 新建电信区: 新建移动区: 将对应接口划归到各自区域: 新建…

Java(二十二)---队列

文章目录 前言1.队列(Queue)的概念2.Queue的使用3.队列的模拟实现4.循环队列5.双端队列6.面试题[1. 用队列实现栈](https://leetcode.cn/problems/implement-stack-using-queues/description/)[2. 用栈实现队列](https://leetcode.cn/problems/implement-queue-using-stacks/de…