Docker Harbor
目录
一、Docker Harbor概述
1、Harbor的优势
2、Harbor知识点
3、Docker私有仓库架构
二、Harbor构建Docker私有仓库
1、环境配置
2、案例需求
3、部署docker-compose服务
4、部署harbor服务
5、启动harbor
① 访问
② 添加项目并填写项目名称
③ 通过127.0.0.1来登陆和推送镜像
④ 维护管理Harbor
⑤ 创建Harbor用户
⑤ 移除 Harbor 服务容器同时保留镜像数据/数据库
Docker Harbor概述
1、Harbor的优势
2、Harbor知识点
3、Docker私有仓库架构
二、Harbor构建Docker私有仓库
1、环境配置
2、案例需求
3、部署docker-compose服务
4、部署harbor服务
5、启动harbor
① 访问
② 添加项目并填写项目名称
③ 通过127.0.0.1来登陆和推送镜像
④ 维护管理Harbor
⑤ 创建Harbor用户
⑤ 移除 Harbor 服务容器同时保留镜像数据/数据库
一、Docker Harbor概述
有可视化的Web管理界面,可以方便管理Docker镜像,又提供了多个项目的镜像权限管理及控制功能
Harbor是VMware公司开源的企业级Docker Registry项目
1、Harbor的优势
① 基于角色控制 ② 基于镜像的复制策略 ③ 支持LDAP/AD ④ 图像删除和垃圾收集 ⑤ 图像UI ⑥ 审计 ⑦ RESTful API
2、Harbor知识点
-
Proxy:通过一个前置的反向代理统一接收浏览器、Docker客户端的请求,并将请求转发给后端不同的服务
-
Registry:负责存储Docker镜像,并处理docker push/pull命令
-
Core services:Harbor的核心功能,包括UI、webhook、token服务
-
Database:为core services提供数据库服务
-
Log collector:·负责收集其他组件的log,供日后进行分析
3、Docker私有仓库架构
所有的请求都经过proxy代理,proxy代理转发给Core services和Registry,其中Core services包括UI界面、token令牌和webhook网页服务功能,Registry主要提供镜像存储功能。如果要进行下载上传镜像,要经过token令牌验证然后从Registry获取或上传镜像,每一次下载或上传都会生成日志记录,会记入Log collector,而用户身份权限及一些镜像语言信息会被存储在Database中。
二、Harbor构建Docker私有仓库
1、环境配置
主机 | 操作系统 | IP地址 | 软件 |
---|---|---|---|
server | CentOS7.6 | 192.168.110.10 | docker、docker-compose、harbor-offline-v1.1.2 |
client | CentOS7.6 | 192.168.110.20 | docker |
2、案例需求
通过Harbor创建Docker私有仓库 图形化管理Docker私有仓库镜像
3、部署docker-compose服务
Harbor 被部署为多个 Docker 容器,因此可以部署在任何支持 Docker 的 Linux 发行版 上。 服务端主机需要安装 Python、Docker 和 Docker Compose。
cd /usr/local rz docker-compose chmod +x docker-compose mv docker-compose /usr/bin 1234
4、部署harbor服务
上传或下载harbor安装程序 wget http:// harbor.orientsoft.cn/harbor-1.2.2/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.110.10 -- 59行--指定管理员的初始密码,默认的用户名/密码是admin/ Harbor12345 harbor_admin_ password = Harbor12345 123456789101112
注: 不可以使用localhost或127.0.0.1为主机名
关于Harbor.cfg 配置文件中有两类参数:所需参数和可选参数 1、所需参数:这些参数需要在配置文件Harbor.cfg 中设置。如果用户更新它们并运行install.sh 脚本重新安装Harbour,参数将生效。具体参数如下: ●hostname:用于访问用户界面和register 服务。它应该是目标机器的IP地址或完全限定的域名(FQDN) ,例如192.168.80.10 或 hub. kgc.cn。不要使用localhost 或127.0.0.1 为主机名 ●ui_url_protocol:(http或https,默认为http)用于访问UI和令牌/通知服务的协议。如果公证处于启用状态,则此参数必须为https ●max_job_workers: 镜像复制作业线程 ●db_password: 用于db_auth的MySQL数据库root用户的密码 ●customize_crt:该属性可设置为打开或关闭,默认打开。打开此属性时,准备脚本创建私钥和根证书,用于生成/验证注册表令牌。当由外部来源提供密钥和根证书时,将此属性设置为off ●ssl_cert: SSL 证书的路径,仅当协议设置为https时才应用 ●secretkey_path:用于在复制策略中加密或解密远程register 密码的密钥路径 ●project_creation_restriction: 用于控制哪些用户有权创建项目的标志。默认情况下,每个人都可以创建-一个项目。如果将其值设置为“adminonly” 那么只有admin可以创建项目 ●verify_remote_cert: 打开或关闭,默认打开。此标志决定了当Harbor与远程register实例通信时是否验证SSL/TLS 证书。将此属性设置为off将绕过SSL/TLS验证,这在远程实例具有自签名或不可信证书时经常使用 另外,默认情况下,Harbour 将镜像存储在本地文件系统.上。在生产环境中,可以考虑使用其他存储后端而不是本地文件系统,如S3、Openstack Swif、Ceph 等对象存储。但需要更新common/templates/registry/config.yml文件
5、启动harbor
sh /usr/local/harbor/install.sh 1
docker ps docker images 12
docker-compose ps 1
① 访问
192.168.110.10/harbor/sign-in 用户名:admin 密码:Harbor12345 123
② 添加项目并填写项目名称
③ 通过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/wbw-project/tomcat:v1 #上传镜像到Harbor docker push 127.0.0.1/wbw-project/tomcat:v1 1234567891011
查看图形化界面
systemctl daemon-reload systemctl restart docker docker login -u admin -p Harbor12345 http://192.168.110.10 123
docker pull nginx docker tag nginx:latest 192.168.110.10/zy/nginx:v1 docker push 192.168.110.10/zy/nginx:v1 123
图形界面查看
④ 维护管理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 123456789101112131415161718
⑤ 创建Harbor用户
client操作
docker logout 192.168.110.10 docker login 192.168.110.10 wubingw 112233445566wbw docker images docker rmi 192.168.110.10/zy/nginx:v1 docker pull 192.168.110.10/zy/nginx:v1 12345678
⑤ 移除 Harbor 服务容器同时保留镜像数据/数据库
在server上进行操作
docker-compose down -v #如果需要重新部署,需要移除Harbor服务容器全部数据 #持久数据,如镜像,数据库等在宿主机的/data目录下,日志在宿主机的/var/log/Harbor目录下 rm -rf /data/database rm -rf /data/registry
Docker Harbor概述
有可视化的Web管理界面,可以方便管理Docker镜像,又提供了多个项目的镜像权限管理及控制功能
Harbor是VMware公司开源的企业级Docker Registry项目
1、Harbor的优势
① 基于角色控制 ② 基于镜像的复制策略 ③ 支持LDAP/AD ④ 图像删除和垃圾收集 ⑤ 图像UI ⑥ 审计 ⑦ RESTful API
2、Harbor知识点
-
Proxy:通过一个前置的反向代理统一接收浏览器、Docker客户端的请求,并将请求转发给后端不同的服务
-
Registry:负责存储Docker镜像,并处理docker push/pull命令
-
Core services:Harbor的核心功能,包括UI、webhook、token服务
-
Database:为core services提供数据库服务
-
Log collector:·负责收集其他组件的log,供日后进行分析
3、Docker私有仓库架构
所有的请求都经过proxy代理,proxy代理转发给Core services和Registry,其中Core services包括UI界面、token令牌和webhook网页服务功能,Registry主要提供镜像存储功能。如果要进行下载上传镜像,要经过token令牌验证然后从Registry获取或上传镜像,每一次下载或上传都会生成日志记录,会记入Log collector,而用户身份权限及一些镜像语言信息会被存储在Database中。
二、Harbor构建Docker私有仓库
1、环境配置
主机 | 操作系统 | IP地址 | 软件 |
---|---|---|---|
server | CentOS7.6 | 192.168.110.10 | docker、docker-compose、harbor-offline-v1.1.2 |
client | CentOS7.6 | 192.168.110.20 | docker |
2、案例需求
通过Harbor创建Docker私有仓库 图形化管理Docker私有仓库镜像
3、部署docker-compose服务
Harbor 被部署为多个 Docker 容器,因此可以部署在任何支持 Docker 的 Linux 发行版 上。 服务端主机需要安装 Python、Docker 和 Docker Compose。
cd /usr/local rz docker-compose chmod +x docker-compose mv docker-compose /usr/bin 1234
4、部署harbor服务
上传或下载harbor安装程序 wget http:// harbor.orientsoft.cn/harbor-1.2.2/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.110.10 -- 59行--指定管理员的初始密码,默认的用户名/密码是admin/ Harbor12345 harbor_admin_ password = Harbor12345 123456789101112
注: 不可以使用localhost或127.0.0.1为主机名
关于Harbor.cfg 配置文件中有两类参数:所需参数和可选参数 1、所需参数:这些参数需要在配置文件Harbor.cfg 中设置。如果用户更新它们并运行install.sh 脚本重新安装Harbour,参数将生效。具体参数如下: ●hostname:用于访问用户界面和register 服务。它应该是目标机器的IP地址或完全限定的域名(FQDN) ,例如192.168.80.10 或 hub. kgc.cn。不要使用localhost 或127.0.0.1 为主机名 ●ui_url_protocol:(http或https,默认为http)用于访问UI和令牌/通知服务的协议。如果公证处于启用状态,则此参数必须为https ●max_job_workers: 镜像复制作业线程 ●db_password: 用于db_auth的MySQL数据库root用户的密码 ●customize_crt:该属性可设置为打开或关闭,默认打开。打开此属性时,准备脚本创建私钥和根证书,用于生成/验证注册表令牌。当由外部来源提供密钥和根证书时,将此属性设置为off ●ssl_cert: SSL 证书的路径,仅当协议设置为https时才应用 ●secretkey_path:用于在复制策略中加密或解密远程register 密码的密钥路径 ●project_creation_restriction: 用于控制哪些用户有权创建项目的标志。默认情况下,每个人都可以创建-一个项目。如果将其值设置为“adminonly” 那么只有admin可以创建项目 ●verify_remote_cert: 打开或关闭,默认打开。此标志决定了当Harbor与远程register实例通信时是否验证SSL/TLS 证书。将此属性设置为off将绕过SSL/TLS验证,这在远程实例具有自签名或不可信证书时经常使用 另外,默认情况下,Harbour 将镜像存储在本地文件系统.上。在生产环境中,可以考虑使用其他存储后端而不是本地文件系统,如S3、Openstack Swif、Ceph 等对象存储。但需要更新common/templates/registry/config.yml文件
5、启动harbor
sh /usr/local/harbor/install.sh 1
docker ps docker images 12
docker-compose ps 1
① 访问
192.168.110.10/harbor/sign-in 用户名:admin 密码:Harbor12345 123
② 添加项目并填写项目名称
③ 通过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/wbw-project/tomcat:v1 #上传镜像到Harbor docker push 127.0.0.1/wbw-project/tomcat:v1 1234567891011
查看图形化界面
systemctl daemon-reload systemctl restart docker docker login -u admin -p Harbor12345 http://192.168.110.10 123
docker pull nginx docker tag nginx:latest 192.168.110.10/zy/nginx:v1 docker push 192.168.110.10/zy/nginx:v1 123
图形界面查看
④ 维护管理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 123456789101112131415161718
⑤ 创建Harbor用户
client操作
docker logout 192.168.110.10 docker login 192.168.110.10 wubingw 112233445566wbw docker images docker rmi 192.168.110.10/zy/nginx:v1 docker pull 192.168.110.10/zy/nginx:v1 12345678
⑤ 移除 Harbor 服务容器同时保留镜像数据/数据库
在server上进行操作
docker-compose down -v #如果需要重新部署,需要移除Harbor服务容器全部数据 #持久数据,如镜像,数据库等在宿主机的/data目录下,日志在宿主机的/var/log/Harbor目录下 rm -rf /data/database rm -rf /data/registry
相关文章:

Docker Harbor
目录 一、Docker Harbor概述 1、Harbor的优势 2、Harbor知识点 3、Docker私有仓库架构 二、Harbor构建Docker私有仓库 1、环境配置 2、案例需求 3、部署docker-compose服务 4、部署harbor服务 5、启动harbor ① 访问 ② 添加项目并填写项目名称 ③ 通过127.0.0.1来…...

第三十四章 Unity人形动画(上)
在我们DirectX课程中,我们讲过一个模型最少拥有网格和材质,可以没有动画。游戏场景中的静态物体就可以是这样的模型,例如花草树木,建筑物等等,他们通过MeshRenderer就可以渲染。对于一个带有动画的FBX文件,…...

计算机图形学-GAMES101-7
引言 场景中有很多的三角形,如果实现可见性和遮挡呢? 一个简单的想法是,从远到近画,近处的物体自然会覆盖掉远处的物体,这种画法也叫画家算法。 但是实际绘制中物体的顺序是不容易确定的,比如如下图绘制…...
AndroidAuto 解决PCTS NF7
直接上代码 public void handleNavigationFocusRequest(int focusType) {// Always grant requested focus in this example.-mGal.galReceiver.sendNavigationFocusState(focusType);+mGal.galReceiver.sendNavigationFocusState...

GPT:你知道这五年我怎么过的么?
时间轴 GPT 首先最初版的GPT,来源于论文Improving Language Understanding by Generative Pre-Training(翻译过来就是:使用通用的预训练来提升语言的理解能力)。GPT这个名字其实并没有在论文中提到过,后人将论文名最后…...

Python一行命令搭建HTTP服务器并外网访问 - 内网穿透
文章目录 1.前言2.本地http服务器搭建2.1.Python的安装和设置2.2.Python服务器设置和测试 3.cpolar的安装和注册3.1 Cpolar云端设置3.2 Cpolar本地设置 4.公网访问测试5.结语 转载自远程内网穿透的文章:【Python】快速简单搭建HTTP服务器并公网访问「cpolar内网穿透…...
TypeScript5-泛型
泛型是 TS 中一个重要的概念,它可以创建可复用的组件,同时保持对类型信息的一致性。 泛型提供了一种方式使得类型可以被参数化,这样就可以创建可以适用于各种数据类型的函数或类,而不仅仅限于一个数据类型。 一、泛型 先来看一…...

IMX6ULL裸机篇之DDR3的时钟配置
一. MMDC 控制器 对于 I.MX6U 来说,有 DDR 内存控制器,否则的话它怎么连接 DDR 呢?MMDC控制器 就是 I.MX6U 的 DDR内存控制器。 MMDC 外设包含一个内核(MMDC_CORE)和 PHY(MMDC_PHY),内核和 PHY 的功能如下: MMDC 内…...
PBDB Data Service:Specimens and measurements(标本和测量)
Specimens and measurements(标本和测量) 描述摘要1. [Single specimen(单个标本)](https://blog.csdn.net/whitedrogen/article/details/130685099)2. [Add specimen records or update existing records(添加标本记录…...

Zookeeper(一)
简介 设计模式角度 Zookeeper:是一个基于观察者模式设计的分布式服务管理框架,它负责存储和管理大家都关心的数据,然后接受观察者的注册,一旦这些数据的状态发生变化,Zookeeper就将负责通知已经在Zookeeper上注册的那…...

Maven(五):Maven的使用——依赖的测试
Maven(五):Maven的使用——依赖的测试 前言一、实验六:测试依赖的范围1、依赖范围1.1 compile 和 test 对比1.2 compile 和 provided 对比1.3 结论 二、实验七:测试依赖的传递性1、依赖的传递性1.1 概念1.2 传递的原则…...

超级独角兽 Databricks 的崛起之路
在数据扩张以及 AI 兴起的时代,数据存储和分析平台拥有巨大价值和能量。 随着互联网数据的爆炸性增长,数据已经成为企业的新型资源,犹如石油般重要。越来越多的企业希望利用各种结构化和非结构化数据来发挥自己的优势。 然而,他…...

python 3.8 + tensorflow 2.4.0 + cuda11.0 的问题
版本匹配 🔗从源代码构建 | TensorFlow 报错:Could not load dynamic library ‘cupti64_110.dll’; dlerror: cupti64_110.dll not found 是因为我电脑中的 cuda 版本以前是 10,现在是 11.4 ,所以需要安装对应版本的 cudatoolk…...
华为杯”研究生数学建模竞赛2021 年中国研究生数学建模竞赛 E 题: 信号干扰下的超宽带(UWB)精确定位问题-参考思路
一、背景 UWB ( Ultra-Wideband )技术也被称之为“超宽带”,又称之为脉冲无线电技术。这是一 种无需任何载波,通过发送纳秒级脉冲而完成数据传输的短距离范围内无线通信技术,并且信 号传输过程中的功耗仅仅有几十 W 。 UWB 因其独有的特点,使其在军事、物联网等各个领…...
Java 中的访问修饰符有什么区别?
Java 中的访问修饰符用于控制类、类的成员变量和方法的访问权限,主要有以下四种: public:公共访问修饰符,可以被任何类访问。public 修饰的类、成员变量和方法可以在任何地方被访问到。 protected:受保护的访问修饰符…...

Go基础篇:接口
目录 前言✨一、什么是接口?二、空接口 interface{}1、eface的定义2、需要注意的问题 三、非空接口1、iface的定义2、itab的定义3、itab缓存 前言✨ 前段时间忙着春招面试,现在也算告一段落,找到一家比较心仪的公司实习,开始慢慢回…...
边缘计算:数字时代的新战场
随着数字化时代的到来,云计算已经成为了各行各业不可或缺的技术支持。但是,由于云计算涉及到数据的传输和存储,对于网络带宽和延迟的要求也非常高,这使得云计算难以满足一些低延迟、高实时性要求的场景。在这种情况下,…...
PBDB Data Service:Fossil occurrences(化石产出记录)
Fossil occurrences(化石产出记录) 描述摘要1. [Single fossil occurrence(单条化石产出记录)](https://blog.csdn.net/whitedrogen/article/details/130519180)2. [List of fossil occurrences(化石产出记录列表&…...

虾皮Shopee商品详情接口(item_get-根据ID取商品详情)代码封装
item_get-根据ID取商品详情接口 通过代码封装该接口可以拿到商品标题,商品价格,商品促销信息,商品优惠价,商品库存,sku属性,商品图片,desc图片,desc描述,sku图片…...

原生js手动实现一个多级树状菜单效果(高度可过渡变化) + 模拟el-menu组件实现(简单版)
文章目录 学习链接效果图代码要点 简单模拟el-menu实现TestTree.vueMenu.vueSubMenu.vue 学习链接 vue实现折叠展开收缩动画 - 自己的链接 elment-ui/plus不定高度容器收缩折叠动画组件 - 自己的链接 vue的过渡与动画理解 Vue transition 折叠类动画自动获取隐藏层高度以及…...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:
一、属性动画概述NETX 作用:实现组件通用属性的渐变过渡效果,提升用户体验。支持属性:width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项: 布局类属性(如宽高)变化时&#…...
Golang dig框架与GraphQL的完美结合
将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用,可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器,能够帮助开发者更好地管理复杂的依赖关系,而 GraphQL 则是一种用于 API 的查询语言,能够提…...

2.Vue编写一个app
1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...
相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...
【HarmonyOS 5 开发速记】如何获取用户信息(头像/昵称/手机号)
1.获取 authorizationCode: 2.利用 authorizationCode 获取 accessToken:文档中心 3.获取手机:文档中心 4.获取昵称头像:文档中心 首先创建 request 若要获取手机号,scope必填 phone,permissions 必填 …...
MySQL 部分重点知识篇
一、数据库对象 1. 主键 定义 :主键是用于唯一标识表中每一行记录的字段或字段组合。它具有唯一性和非空性特点。 作用 :确保数据的完整性,便于数据的查询和管理。 示例 :在学生信息表中,学号可以作为主键ÿ…...

Unity中的transform.up
2025年6月8日,周日下午 在Unity中,transform.up是Transform组件的一个属性,表示游戏对象在世界空间中的“上”方向(Y轴正方向),且会随对象旋转动态变化。以下是关键点解析: 基本定义 transfor…...
人工智能 - 在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型
在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型。这些平台各有侧重,适用场景差异显著。下面我将从核心功能定位、典型应用场景、真实体验痛点、选型决策关键点进行拆解,并提供具体场景下的推荐方案。 一、核心功能定位速览 平台核心定位技术栈亮…...

如何在Windows本机安装Python并确保与Python.NET兼容
✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…...

密码学基础——SM4算法
博客主页:christine-rr-CSDN博客 专栏主页:密码学 📌 【今日更新】📌 对称密码算法——SM4 目录 一、国密SM系列算法概述 二、SM4算法 2.1算法背景 2.2算法特点 2.3 基本部件 2.3.1 S盒 2.3.2 非线性变换 编辑…...