docker harbor私有库
目录
一.Harbor介绍
二.Harbor的特性
三.Harbor的构成
四.Harbor构建Docker私有仓库
4.2在Server主机上部署Harbor服务(192.168.158.25)
4.2.1 这时候这边就可以去查看192.168.158.25网页
4.3此时可真机访问serverIP
4.4通过127.0.0.1来登陆和推送镜像
五.其他客户端上传镜像到Harbor
六.维护管理Harbor
创建Harbor用户
七.client操作
八.移除 Harbor 服务容器同时保留镜像数据/数据库
总结及扩展
一.Harbor介绍
- 有可视化的Web管理界面,可以方便管理Docker镜像,又提供了多个项目的镜像权限管理及控制功能
- Harbor是VMware公司开源的企业级Docker Registry项目
- Harbor以Docker 公司开源的Registry 为基础,提供了图形管理UI、基于角色的访问控制(Role Based AccessControl)、AD/LDAI们成以心宙计日志(Auditlogging)等企业用户需求的功能,同时还原生支持中文。
- Harbor的每个组件都是以Docker容器的形式构建的,使用docker-compose来对它进行部署。用于部署Harbor的docker-compose模板位于harbor/docker-compose.yml。
二.Harbor的特性
- 基于角色控制:用户和仓库都是基于项目进行组织的,而用户在项目中可以拥有不同的权限。
- 基于镜像的复制策略:镜像可以在多个Harbor实例之间进行复制(同步)。
- 支持LDAP/AD:Harbor可以集成企业内部已有的AD/LDAP(类似数据库的一张表),用于对已经存在的用户认证和管理。
- 镜像删除和垃圾回收:镜像可以被删除,也可以回收镜像占用的空间。
- 图形化用户界面:用户可以通过浏览器来浏览,搜索镜像仓库以及对项目进行管理。
- 审计管理:所有针对镜像仓库的操作都可以被记录追溯,用于审计管理。
- 支持 RESTful API:RESTful API 提供给管理员对于Harbor更多的操控,使得与其它管理软件集成变得更容易。
- Harbor和docker registry的关系:Harbor实质上是对docker registry做了封装,扩展了自己的业务模板。
三.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服务发起的请求,
如果不包含Docker Token,会被重定向到Token服务,获得Token后再重新向Registry进行请求。
- Database(harbor-db):为core services提供数据库服务,负责存储用户权限、审计日志、Docker镜像分组信息等数据。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 这样一个数据配置管理中心来完成
四.Harbor构建Docker私有仓库
- 通过Harbor创建Docker私有仓库
- 图形化管理Docker私有仓库镜像
| 主机 | 操作系统 | IP地址 | 软件 |
| server | CentOS7.6 | 192.168.158.25 | docker、docker-compose、harbor-offline-v1.1.2 |
| client | CentOS7.6 | 192.168.158.26 | docker |
4.2在Server主机上部署Harbor服务(192.168.158.25)
192.168.158.25 server端cd /usr/local
rz docker-compose
chmod +x docker-compose
mv docker-compose /usr/bin

rz harbor-offline-installer-v1.2.2.tgz
tar zxvf harbor-offline-installer-v1.2.2.tgz -C /usr/local/==配置Harbor参数文件==
vim /usr/local/harbor/harbor.cfg==第5行修改==
hostname = 192.168.158.25


sh /usr/local/harbor/install.sh

4.2.1 这时候这边就可以去查看192.168.158.25网页
网页打不开
以下方法可以解决

docker-cocker ps #查看服务docker-cocker up #从启下服务 再去查看下192.168.158.25网页要是网页 还是无法访问网站 那就是 虚拟机的问题init6 #重起下虚拟机docker-conker up #从启下服务这下就好了



docker ps
docker images



4.3此时可真机访问serverIP
192.168.158.25
用户名:admin
密码:Harbor12345




4.4通过127.0.0.1来登陆和推送镜像
- 此时可使用 Docker 命令在本地通过 127.0.0.1 来登录和推送镜像。默认情况下,
Register 服务器在端口 80 上侦听
#登陆
docker login -u admin -p Harbor12345 http://127.0.0.1#下载镜像进行测试
docker pull tomcat#镜像打标签
docker tag tomcat 127.0.0.1/test/tomcat:v1 #标签那个名字哦一定是自己的项目名称#上传镜像到Harbor
docker push 127.0.0.1/test/tomcat:v1 #这边也是一样的



五.其他客户端上传镜像到Harbor
- 以上操作都是在 Harbor 服务器本地操作。如果其他客户端上传镜像到 Harbor,就会报
如下错误。出现这问题的原因 Docker Registry 交互默认使用的是 HTTPS,但是搭建私有镜
像默认使用的是 HTTP 服务,所以与私有镜像交互时出现以下错误。


解决方案:
vim /usr/lib/systemd/system/docker.service
添加 --insecure-registry 192.168.158.25

systemctl daemon-reload
systemctl restart dockerps:如果重启docker失败的话就把守护进程里的地址指向那行给删了


解决方法:
[root@centos6 ~]# curl 192.168.158.25:80
curl: (7) Failed connect to 192.168.158.25:80; 拒绝连接[root@centos6 ~]# docker ps -a #查看所有容器id[root@centos6 ~]# docker mf -f [输入容器id] #一共七个全删掉#启动 -f指定调度用文件 -d后台启动
[root@centos6 ~]# docker-compose -f docker-compose.yml up -d [root@centos6 ~]# docker ps -a[root@centos6 ~]# curl 192.168.158.25:80 #访问成[root@centos6 ~]# docker login -u admin -p Haebor12345 nttp://182.168.158.25





docker pull nginx
docker tag nginx:latest 192.168.158.25/test/nginx:v1
docker push 192.168.158.25/test/nginx:v1


图形界面查看

六.维护管理Harbor
- 可以使用docker-compose 来管理 Harbor。一些有用的命令如下所示,必须在与
docker-compose.yml 相同的目录中运行。 - 修改Harbor.cfg 配置文件
要更改 Harbour 的配置文件时,请先停止现有的 Harbour 实例并更新 Harbor.cfg;然
后运行 prepare 脚本来填充配置;最后重新创建并启动 Harbour 的实例。
#卸载
docker-compose down -v#编辑配置文件
vim harbor.cfg#填充配置
./prepare#启动Harbor
docker-compose up -d#如果报错
解决思路
关闭防火墙、重启docker
systemctl stop firewalld
setenfore 0
systemctl restart docker

创建Harbor用户


项目管理员和开放人员具有权限
访问只读权限

七.client操作
docker logout 192.168.158.25
docker login 192.168.158.25
用户名
密码docker images
docker rmi 192.168.158.25/test/nginx:v1
docker pull 192.168.158.25/test/nginx:v1



八.移除 Harbor 服务容器同时保留镜像数据/数据库
- 在server上进行操作
docker-compose down -v#如果需要重新部署,需要移除Harbor服务容器全部数据
#持久数据,如镜像,数据库等在宿主机的/data目录下,日志在宿主机的/var/log/Harbor目录下
rm -rf /data/database
rm -rf /data/registry
总结及扩展
1.docker harbor私有仓库操作过程
(1)所有请求或认为的操作都会首先交给proxy(反向代理)
(2)proxy会将请求转发给后端core services
(3)UI、token(身份验证服务)、wehook(网站的一些服务功能)
(4)转发给registry(镜像存储),若需下载镜像等权限操作,需通过token令牌的身份验证服务才可以
(5)每一次下载和上传都产生操作记录,生成日志,保存在database中
(6)database记录保存镜像的元信息以及用户与组的信息,通过验证授权才能允许相关操作
2.使用堡垒机的方式流程

相关文章:
docker harbor私有库
目录 一.Harbor介绍 二.Harbor的特性 三.Harbor的构成 四.Harbor构建Docker私有仓库 4.2在Server主机上部署Harbor服务(192.168.158.25) 4.2.1 这时候这边就可以去查看192.168.158.25网页 4.3此时可真机访问serverIP 4.4通过127.0.0.1来登陆和推送镜…...
strcmp 的使用和模拟
目录 函数介绍: 头文件: 语法: 代码演示: 函数模拟: 函数介绍: strcmp是比较大小的函数。从字符串开始进行比较,如果两个相同位置的字符相同,那么继续往下进行比较,…...
军用加固计算机
军用加固计算机是为满足军事应用需求而设计的一种高性能、高安全性的计算机。与普通计算机相比,它具有以下特点: 加固材料:军用加固计算机通常采用钢板、铝合金等材料进行加固,能够承受较大的冲击和振动,保证在恶劣环境…...
block层:5. 请求分配
请求相关 源码基于5.10 1. 分配请求 static struct request *__blk_mq_alloc_request(struct blk_mq_alloc_data *data) {// 请求队列struct request_queue *q data->q;// 电梯struct elevator_queue *e q->elevator;u64 alloc_time_ns 0;unsigned int tag;// 判断…...
L1-038 新世界(Python实现) 测试点全过
题目 这道超级简单的题目没有任何输入。 你只需要在第一行中输出程序员钦定名言“Hello World”,并且在第二行中输出更新版的“Hello New World”就可以了。 输入样例: 无输出样例: Hello World Hello New World题解 """…...
【hello git】初识Git
目录 一、简述Git 二、Linux 下 Git 的安装:CentOS 2.1 基本命令 2.2 示例: 三、Linux 下 Git 的安装:ubuntu 3.1 基本命令 3.2 示例: 一、简述Git Git :版本控制器,记录每次的修改以及版本迭代的一个管…...
Vueelementui动态渲染Radio,Checkbox,笔记
<div id"app"><el-card style"width: 300px"><el-form label-position"top" size"mini"><el-form-item label"标题"><el-input></el-input></el-form-item><el-form-item v-f…...
SpringDataRedis 使用
1. SpringDataRedis 特点2. 使用 SpringDataRedis 步骤3. 自定义 RedisTemplate 序列化4. SpringDataRedis 操作对象 1. SpringDataRedis 特点 提供了对不同 Redis 客户端的整合(Lettuce 和 Jedis)提供了 RedisTemplate 统一 API 来操作 Redis支持 Redi…...
Redis全局命令与数据结构
"那篝火在银河尽头~" Redis-cli命令启动 现如今,我们已经启动了Redis服务,下⾯将介绍如何使⽤redis-cli连接、操作Redis服务。客户端与服务端交互的方式有两种: ● 第⼀种是交互式⽅式: 后续所有的操作都是通过交互式的⽅式实现,…...
LibreOffice新一代的办公软件for Mac/Windows免费版
LibreOffice是一款免费、开源的办公软件套件,可在多个操作系统上运行,包括Windows、Mac和Linux。它提供了一系列功能强大的办公工具,包括文档处理、电子表格、演示文稿、数据库管理等。 LibreOffice的界面简洁直观,与其他流行的办…...
Python|OpenCV-读取视频,显示视频并保存视频(3)
前言 本文是该专栏的第3篇,后面将持续分享OpenCV计算机视觉的干货知识,记得关注。 在使用OpenCV处理视频的时候,不论是摄像头画面还是视频文件,通常情况下都要使用VideoCapture类来进行每一帧图像的处理。对于OpenCV而言,只要使用视频文件作为参数,它就可以打开视频文件…...
上传WSL项目到gitlab
上传WSL项目到gitlab 设置ssh将SSH公钥添加到Gitlab 将WSL上的代码上传到gitlab确保在WSL环境中安装了git下面是上传代码到GitLab的具体步骤: 可能遇到的各种错误 设置ssh Gitlab添加SSH KEY 什么是SSH ? SSH 是一种网络协议,具备协议级别的认证及会话…...
从0开始做yolov5模型剪枝
文章目录 从0开始做yolov5模型剪枝 ****1 前言2 GitHub取源码3 原理3.1 原理3.2 network slimming过程 4 具体实施步骤4.1 安装虚拟环境4.2 配置参数4.2.1 数据集参数4.2.2 模型结构参数4.2.3 train.py中的参数 4.3 正常训练4.3.1 准备4.3.2 训练及问题解决 4.4 稀疏化训练4.4.…...
飞天使-k8s基础组件分析-安全
文章目录 名称空间解释访问kubernetes API的控制RBAC的介绍 kubeconfig用户的创建集群默认角色 给组创建授权针对pod配置服务账户参考文档 名称空间解释 名字是啥? 答:集群中每个对象的名称对于该类型的资源都是唯一的。并且每一个对象在整个集群中也有…...
Mysql安装使用
Mysql下载: MySQL :: Download MySQL Community Server Mysql解压: 解压后在根目录新建data文件夹和新建my.ini文件 my.ini文件内容如下: 注意:记得修改目录位置 [mysqld] # 设置3306端口 port3306 # 设置mysql的安装目录 basedirD:\\mysql-5.7.30…...
聚类分析 | MATLAB实现基于LP拉普拉斯映射的聚类可视化
聚类分析 | MATLAB实现基于LP拉普拉斯映射的聚类可视化 目录 聚类分析 | MATLAB实现基于LP拉普拉斯映射的聚类可视化效果一览基本介绍程序设计参考资料 效果一览 基本介绍 聚类分析 | MATLAB实现基于LP拉普拉斯映射的聚类可视化,聚类结果可视化,MATLAB程…...
uniapp 使用 mui-player 插件播放 m3u8/flv 视频流
在UniApp中使用mui-player插件播放M3U8/FLV视频流,可以按照以下步骤进行操作: 1. 安装mui-player插件 :在UniApp项目根目录下,使用命令行工具执行以下命令安装mui-player插件: npm install mui-player --save2. 在需…...
大数据课程K4——Spark的DAGRDD依赖关系
文章作者邮箱:yugongshiye@sina.cn 地址:广东惠州 ▲ 本章节目的 ⚪ 了解Spark的DAG; ⚪ 掌握Spark的RDD的依赖关系; ⚪ 了解Spark对于DAG的Stage的划分; 一、DAG概念 1. 概述 Spark会根据用户提交的计算逻辑中的RDD的转换和动作来生成RDD之间的依赖关…...
disable 禁用元素后无法触发点击事件
业务需求点击被禁用的输入框触发事件 在被禁用元素上套一层div div上绑定事件 原本是不需要加事件穿透即可触发 但是最近谷歌更新触发不了 加一个事件穿透就好了 核心代码 style"pointer-events:none"style“pointer-events:none” 事件穿透 整体代码 <el-table-…...
uni-app开启gzip配置
指令:npm install webpack4.46.0 --save-dev 指令:npm install compression-webpack-plugin6.1.1 --save-dev vue.config.js const CompressionWebpackPlugin require(compression-webpack-plugin);module.exports {configureWebpack: config > {…...
C++_核心编程_多态案例二-制作饮品
#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为:煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例,提供抽象制作饮品基类,提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...
C++初阶-list的底层
目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...
【位运算】消失的两个数字(hard)
消失的两个数字(hard) 题⽬描述:解法(位运算):Java 算法代码:更简便代码 题⽬链接:⾯试题 17.19. 消失的两个数字 题⽬描述: 给定⼀个数组,包含从 1 到 N 所有…...
大数据零基础学习day1之环境准备和大数据初步理解
学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 (1)设置网关 打开VMware虚拟机,点击编辑…...
【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)
要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况,可以通过以下几种方式模拟或触发: 1. 增加CPU负载 运行大量计算密集型任务,例如: 使用多线程循环执行复杂计算(如数学运算、加密解密等)。运行图…...
今日科技热点速览
🔥 今日科技热点速览 🎮 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售,主打更强图形性能与沉浸式体验,支持多模态交互,受到全球玩家热捧 。 🤖 人工智能持续突破 DeepSeek-R1&…...
Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习)
Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习) 一、Aspose.PDF 简介二、说明(⚠️仅供学习与研究使用)三、技术流程总览四、准备工作1. 下载 Jar 包2. Maven 项目依赖配置 五、字节码修改实现代码&#…...
GO协程(Goroutine)问题总结
在使用Go语言来编写代码时,遇到的一些问题总结一下 [参考文档]:https://www.topgoer.com/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B/goroutine.html 1. main()函数默认的Goroutine 场景再现: 今天在看到这个教程的时候,在自己的电…...
Python 实现 Web 静态服务器(HTTP 协议)
目录 一、在本地启动 HTTP 服务器1. Windows 下安装 node.js1)下载安装包2)配置环境变量3)安装镜像4)node.js 的常用命令 2. 安装 http-server 服务3. 使用 http-server 开启服务1)使用 http-server2)详解 …...
手机平板能效生态设计指令EU 2023/1670标准解读
手机平板能效生态设计指令EU 2023/1670标准解读 以下是针对欧盟《手机和平板电脑生态设计法规》(EU) 2023/1670 的核心解读,综合法规核心要求、最新修正及企业合规要点: 一、法规背景与目标 生效与强制时间 发布于2023年8月31日(OJ公报&…...
