小白到运维工程师自学之路 第六十七集(Harbor企业镜像仓库部署)

一、概述

Harbor 是 VMware 公司开源的企业级 Docker Registry 项目,其目标是帮助用户迅速搭建一个企业级的 Docker Registry 仓库服务。它以Docker公司开源的Registry为基础,提供了管理 UI。基于角色的访问控制(Role Based AccessControl)、AD/LDAP集成、以及审计日志 (Auditlogging) 等企业用户需求的功能。通过添加一些企业必需的功能特性,例如安全、标识和管理等,扩展了开源Docker Distribution。作为一个企业级私有Registry服务器,Harbor提供了更好的性能和安全,以提升用户使用 Registry 构建和运行环境传输镜像的效率。

Harbor 的优势

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

2、基于镜像的复制策略: 镜像可以在多个 Harbor 实例之间进行复制(同步)。适用于负载平衡、高可用性、多数据中心、混合和多云场景。

3、支持 LDAP / AD:Harbor 与现有的企业 LDAP / ADA 集成,用于用户认证和管理。

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

5、图形 UI:用户可以轻松浏览、搜索镜像仓库以及对项目进行管理。

6、审计: 对存储库的所有操作都进行记录。

7、RESTful API:用于大多数管理操作的 RESTful API,易于与外部系统集成。

二、Harbor 架构构成

1、Proxy:Harbor 的 Registry、UI、token 等服务。通过一个前置的反向代理统一接收浏览器Docker 客户端的请求,并将请求转发给后端不同的服务。

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

3、Core services 这是 Harbor 的核心功能,主要提供以下服务:

        ①、UI(Harbor-ui):提供图形化界面,帮助用户管理 Registry 上的镜像(image), 并对用户进行授权。

        ②、Webhook:为了及时获取 registry 上image状态变化的情况,在Registry上配置webhook,把状态变化传递给UI模块。

        ③、Token 服务:负责根据用户权限给每个Docker push/pull命令签发token.Docker客户端向 Regiøstry服务发起的请求,如果不包含token,会被重定向到这里,获得token后再重新向 Registry进行请求。

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

5、Log collector(Harbor-log):为了帮助监控 Harbor 运行,负责收集其他组件的log,供日后进行分析。

                                                    

 

三、准备工作

1、三台主机提前安装docker-ce

2、master、slave安装docker-compose

3、关闭防火墙

4、最好是有火狐浏览器(测试的时候用其他浏览器可能会报错)

四、安装部署

1、搭建nfs服务端

mkdir -p /data/nfs                                    创建共享目录
yum -y install nfs-utils rpcbind                      安装软件
cat <<END>> /etc/exports                                      
/data/nfs 192.168.77.0/24(rw,no_root_squash)          映射
systemctl start rpcbind                               启动软件
systemctl start nfs

主从服务器操作

yum -y install nfs-utils rpcbind
mkdir -p /data/storage
mount 192.168.77.16:/data/nfs /data/storage

 在nfs端操作

准备共享容器

docker pull redis:alpine
docker run -dit --name redis_test -p 6379:6379 redis:alpinedocker pull postgres
docker run -dit --name postgres_test -p 5432:5432 -e POSTGRES_PASSWORD=123123 postgresdocker pull mysql:5.6
docker run -dit --name mysql_test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123123 mysql:5.6 --character-set-server=utf8docker rename postgres_test clair_db
docker rename mysql_test harbor_db
docker rename redis_test session

2、Harbor部署

tar xf harbor-offline-installer-v1.6.1.tgz
cd harbor/
tree ha

vim ha/initial-registry.sql            修改需要导入的数据库文件,不然会报错
CREATE DATABASE registry CHARACTER SET utf8;

 

yum -y install mysql
mysql -uroot -p123123 -h192.168.77.16 -P3306
source ha/initial-registry.sql

vim ha/docker-compose.yml
19行       - /data/storage:/storage:z	#修改成我们的nfs共享目录

vim harbor.cfg
7 hostname = 192.168.77.123

 

sh install.sh

 出现以下字段就表示成功了

 再查看容器确认一下都是UP

 登录镜像仓库,默认用户是admin 密码是Harbor12345

 

五、测试

创建一个新项目myproject-crushlinux 

docker login -u admin -p Harbor12345 http://127.0.0.1 登录仓库 默认是80端口

docker pull buysbox 下载一个小一点的镜像测试

docker tag busybox 127.0.0.1/myproject-crushlinux/busybox:syh  打标签
docker push 127.0.0.1/myproject-crushlinux/busybox:syh         上传镜像

 到仓库查看

docker logout 192.168.77.123 退出仓库

六、客户端上传镜像

vim /usr/lib/systemd/system/docker.service
13行  ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock  --insecure-registry 192.168.77.123 

重启后登录
systemctl daemon-reload 
systemctl restart docker
docker login -u admin -p Harbor12345 192.168.77.123

docker pull busybox       下载一个小一点的镜像进行测试

docker tag busybox 192.168.77.123/myproject-crushlinux/busybox:syh2
docker push 192.168.77.123/myproject-crushlinux/busybox:syh2

 查看

 七、Harbor 日常操作管理

1、通过 Harbor Web 创建项目 

点击“+项目”时按规范填写项目名称。项目级别:私有即不勾选(勾选后会变为"公开")。如果设置为公共仓库,则所有人对此项目下的镜像拥有读权限,命令行中不需要执行"Docker login"即可下载镜像,镜像操作与Docker hub 一致。

2、创建 Harbor 用户 

①、创建用户并分配权限

系统管理->用户管理->创建用户,填写用户名为“crushlinux-user01”,邮箱为 crushlinux-user01@crushlinux.cn,全名为“harbor admin”,密码为“A123a456”,注释为“管理员”。

 

 

②、添加项目成员

项目-> myproject-crushlinux->成员->+成员,填写上述创建的用户并分配角色为“项目管理员”。

可对成员角色进行变更或者删除操作。

以上就是Harbor企业镜像仓库部署

如有错误欢迎各位大佬批评指正,我们共同进步

 

 

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于Java的新闻全文搜索引擎的设计与实现

中文摘要 本文以学术研究为目的&#xff0c;针对新闻行业迫切需求和全文搜索引擎技术的优越性&#xff0c;设计并实现了一个针对新闻领域的全文搜索引擎。该搜索引擎通过Scrapy网络爬虫工具获取新闻页面&#xff0c;将新闻内容存储在分布式存储系统HBase中&#xff0c;并利用倒…

RabbitMQ - 简单案例

目录 0.引用 1.Hello world 2.轮训分发消息 2.1 抽取工具类 2.2 启动两个工作线程接受消息 2.4 结果展示 3.消息应答 3.1 自动应答 3.2 手动消息应答的方法 3.3 消息自动重新入队 3.4 消息手动应答代码 4.RabbitMQ 持久化 4.1 队列如何实现持久化 4.2 消息实现持久化 5.不…

面试热题(LRU缓存)

请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类&#xff1a; LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存int get(int key) 如果关键字 key 存在于缓存中&#xff0c;则返回关键字的值&#xff0c;否则返回 -1 …

OB数据库基础知识(学习记录)

目录 OB业务场景 公司使用理由&#xff1a; 常见 bootstrap 失败原因 常见OBD 部署 失败原因 Grafana 查看集群资源由各个节点的聚合情况 OB创建租户 表分组的场景 mysqldump到处数据库schema&#xff0c;数据库数据&#xff0c;表数据 数据同步框架 DATAX obdumper…

MongoDB文档-进阶使用-MongoDB索引-createindex()与dropindex()-在MongoDB中使用正则表达式来查找

阿丹&#xff1a; 之前研究了MongoDB的基础增删改查。在学会基础的数据库增删改查肯定是不够的。这个时候就涉及到了数据库搜索的时候的效率。需要提高数据的搜索效率。 MongoDB索引 在所以数据库中如果没有数据索引的时候。如果需要查找到一些数据。都会去主动扫描所有可能存…

开源代码分享(12)—考虑负荷曲线的配电网扩展规划(附matlab代码)

1.背景介绍 电力系统&#xff08;SEP&#xff09;不断扩展&#xff0c;以满足电力消费者的需求。在这个背景下&#xff0c;配电系统扩展规划&#xff08;PESD&#xff09;确定了配电网络扩展的指导方针。除了SEP的扩展之外&#xff0c;现代化和新技术的出现&#xff0c;例如分布…

Babylon.js开发工具链大全

本文介绍Babylon 团队&#xff08;JS 和原生&#xff09;和社区共同创建的所有出色工具的摘要&#xff0c;以帮助开发人员和设计人员创建出色的 3D 体验。 推荐&#xff1a;用 NSDT设计器 快速搭建可编程3D场景。 1、Sandbox 第一个工具Sandbox可能是最简单的&#xff0c;它实…

接口测试—知识速查(Postman)

文章目录 接口测试1. 概念2. 原理3. 测试流程4. HTTP协议4.1 URL的介绍4.2 HTTP请求4.2.1 请求行4.2.2 请求头4.2.3 请求体4.2.4 完整的HTTP请求示例 4.3 HTTP响应4.3.1 状态行4.3.2 响应头4.3.3 响应体4.3.4 完整的HTTP请求示例 5. RESTful接口规范6. 测试用例的设计思路6.1 单…

uniapp 微信小程序 分包

1、manifest.json内添加如图所示&#xff1a; "optimization" : {"subPackages" : true },2、在与pages同级上创建各个分包的文件夹 把需要分包的文件对应移入分包文件夹内 3、page.json内修改分包文件的路径 比如&#xff1a; {"path" : &qu…

微信云托管(本地调试)⑥:nginx、vue刷新404问题

一、nginx默认路径 1.1、默认配置文件路径&#xff1a;/etc/nginx/nginx.conf 1.2、默认资源路径&#xff1a;/usr/share/nginx/html/index.html 二、修改nginx.conf配置 &#xff08;注意配置中的&#xff1a;include /etc/nginx/conf.d/*.conf; 里面包了一个server配置文件…

Unity制作护盾——1、闪电护盾

Unity引擎制作闪电护盾效果 大家好&#xff0c;我是阿赵。   这期做一个闪电护盾的效果。 一、效果说明 可以改变闪电的颜色 可以改变范围 改变贴图的平铺次数&#xff0c;也可以做出各种不同感觉的护盾。 二、原理 这个效果看着很复杂&#xff0c;其实只是用了一张N…

【excel密码】excel数据加密,如何设置?

Excel数据完成制作之后&#xff0c;想要保护工作表数据不被修改&#xff0c;我们可以对excel数据设置保护&#xff0c;确保数据的准确性。今天分享两种方法设置数据保护。 方法一&#xff1a;工作表/工作簿保护 这里的限制编辑被分为了两种方式&#xff0c;分别是保护工作表、…

Rpc原理

dubbo原理 1、RPC原理 一次完整的RPC调用流程&#xff08;同步调用&#xff0c;异步另说&#xff09;如下&#xff1a; 1&#xff09;服务消费方&#xff08;client&#xff09;调用以本地调用方式调用服务&#xff1b; 2&#xff09;client stub接收到调用后负责将方法、参数…

【快应用】list组件属性的运用指导

【关键词】 list、瀑布流、刷新、页面布局 【问题背景】 1、 页面部分内容需要瀑布流格式展示&#xff0c;在使用lsit列表组件设置columns进行多列渲染时&#xff0c;此时在里面加入刷新动画时&#xff0c;动画只占了list组件的一列&#xff0c;并没有完全占据一行宽度&…

科技感响应式管理系统后台登录页ui设计html模板

做了一个科技感的后台管理系统登录页设计&#xff0c;并且尝试用响应式布局把前端html写了出来&#xff0c;发现并没有现象中的那么容易&#xff0c;chrome等标准浏览器都显示的挺好&#xff0c;但IE11下面却出现了很多错位&#xff0c;兼容起来还是挺费劲的&#xff0c;真心不…

Linux下QtCreator勾选Use root user后出现error while loading shared libraries的问题

文章目录 背景解决办法其他解决办法 背景 在linux下调试程序时&#xff0c;有时候需要取得root权限才能连接操作某些设备。 之前我是通过脚本方式 [在QtCreator中先执行自定义命令再执行程序]来进行的。也就是在脚本中取得权限&#xff0c;脚本内容类似这样&#xff1a; echo…

如何维护你的电脑:打造IT人的重要武器

文章目录 方向一&#xff1a;介绍我的电脑方向二&#xff1a;介绍我的日常维护措施1. 定期清理和优化2. 保持良好的上网习惯和安全防护3. 合理安排软件和硬件的使用4. 数据备份和系统还原 方向三&#xff1a;推荐的维护技巧1. 数据分区和多系统安装2. 内部清洁和散热优化3. 安全…

鉴源论坛·观擎丨浅谈操作系统的适航符合性(下)

作者 | 蔡喁 上海控安可信软件创新研究院副院长 版块 | 鉴源论坛 观擎 社群 | 添加微信号“TICPShanghai”加入“上海控安51fusa安全社区” 在浅谈操作系统的适航符合性&#xff08;上&#xff09;中&#xff0c;详细介绍了民用飞机操作系统的研制现状及其适航要求&#xff…

服装行业多模态算法个性化产品定制方案 | 京东云技术团队

一、项目背景 AI赋能服装设计师&#xff0c;设计好看、好穿、好卖的服装 传统服装行业痛点 • 设计师无法准确捕捉市场趋势&#xff0c;抓住中国潮流 • 上新周期长&#xff0c;高库存滞销风险大 • 基本款居多&#xff0c;难以满足消费者个性化需求 解决方案 • GPT数据…

RunnerGo配置场景时接口模式该怎么选

在进行性能测试时&#xff0c;测试场景的正确配置非常关键。首先&#xff0c;需要根据业务场景和需求&#xff0c;设计出合理的测试场景&#xff0c;再利用相应的工具进行配置&#xff0c;实现自动化的性能测试。 在JMeter中&#xff0c;用户需要自己组织测试场景&#xff0c;…