搭建Docker私服镜像仓库Harbor

1、概述

Harbor是由VMware公司开源的企业级的Docker Registry管理项目,它包括权限管理(RBAC)、LDAP、日志审核、管理界面、自我注册、镜像复制和中文支持等功能。

Harbor 的所有组件都在 Dcoker 中部署,所以 Harbor 可使用 Docker Compose 快速部署。

由于 Harbor 是基于 Docker Registry V2 版本,所以 docker 版本必须 > = 1.10.0 docker-compose >= 1.6.0

Harbor的目标是帮助用户迅速搭建一个企业级的Docker registry服务。它以Docker公司开源的registry为基础,额外提供了如下功能:

  • 基于角色的访问控制(Role Based Access Control)
  • 基于策略的镜像复制(Policy based image replication)
  • 镜像的漏洞扫描(Vulnerability Scanning)
  • AD/LDAP集成(LDAP/AD support)
  • 镜像的删除和空间清理(Image deletion & garbage collection)
  • 友好的管理UI(Graphical user portal)
  • 审计日志(Audit logging)
  • RESTful API
  • 部署简单(Easy deployment)

1.1 架构图

Harbor的每个组件都是以Docker容器的形式构建的,可以使用Docker Compose来进行部署。如果环境中使用了kubernetes,Harbor也提供了kubernetes的配置文件。

Harbor大概需要以下几个容器组成:ui(Harbor的核心服务)、log(运行着rsyslog的容器,进行日志收集)、mysql(由官方mysql镜像构成的数据库容器)、Nginx(使用Nginx做反向代理)、registry(官方的Docker registry)、adminserver(Harbor的配置数据管理器)、jobservice(Harbor的任务管理服务)、redis(用于存储session)。

Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,整体架构还是很清晰的。架构图如下:
在这里插入图片描述

2、安装docker

Harbor要依赖Docker,所以要先安装,见:Ubuntu20.04安装Docker

3、下载Harbor

访问harbor release page,下载Harbor软件tgz压缩包。
在这里插入图片描述

4、解压

tar -zxvf harbor-offline-installer-v2.9.4.tgz

解压后出现一个 hardor 的文件夹,进去之后查看
在这里插入图片描述
此时还没有 harbor.yml 和 docker-compose.yml,复制一份harbor.yml.tmpl ,然后进行修改

cp harbor.yml.tmpl harbor.yml

主要改下面地方,填上hostname,port,注释掉https相关
在这里插入图片描述

5、安装

在当前 harbor 目录下执行./install.sh
在这里插入图片描述
等待安装成功。会出现上面提到的 docker-compose.yml文件,里面包含了harbor依赖的镜像和对应容器创建的信息。
在这里插入图片描述
在这里插入图片描述

6、安装docker-compose

# 安装
curl -L "https://github.com/docker/compose/releases/download/v2.27.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose# 授权
chmod +x /usr/local/bin/docker-compose

7、执行docker-compose

在harbor的目录下执行以下命令

# 启动
docker-compose up -d# 停止
docker-compose down

启动后使用docker ps -a查看harbor相关容器启动情况(总计9个):
在这里插入图片描述

8、访问

根据上面的配置的IP,访问 http://172.28.168.223:5180
在这里插入图片描述
默认用户 和登录密码 可以从 harbor.yml 中找到,官网有个地方也有说明

admin / Harbor12345

在这里插入图片描述
登录成功
在这里插入图片描述

9、使用

9.1 创建用户和项目

首先有一个 public 的 library 项目,在里面创建对应的用户即可pull 和 push镜像,也可以创建其它项目
在这里插入图片描述

9.2 docker配置 harbor

结合docker实现镜像上传和下载,在/etc/docker/daemon.json添加以下内容
IP为harbor的IP地址和端口,端口如果是80可省略

# 仓库IP地址和端口,或者是域名,要加上http或https
"insecure-registries":["http://172.28.168.223:5180"],"registry-mirrors":["http://172.28.168.223:5180"]

在这里插入图片描述

  • registry-mirrors:配置的是阿里云镜像加速,该文的问题不需要配置该项
  • insecure-registries:允许 Docker 客户端连接到没有使用 HTTPS 或使用了自签名证书的 Docker 镜像仓库
    registry-mirrors:必须配置你的harbor仓库!!!否则可能造成,docker login是成功的,但是push镜像时出现相同的问题

重启docker:service docker restart
重启harbor

# 停止
docker-compose down# 启动
docker-compose up -d

9.3 登录仓库

docker login -u 'admin' -p 'Harbor12345'  http://172.28.168.223:5180

在这里插入图片描述

9.2 上传镜像到harbor

在上传镜像前,需要为镜像打上标签,命令如下:

docker tag <image_name> <harbor_host>/<project_name>/<image_name>:<tag>

以redis镜像为例:

docker tag redis:5.0.10 172.28.168.223:5180/library/redis:5.0.10

在这里插入图片描述
上传镜像,命令如下:

docker push <harbor_host>/<project_name>/<image_name>:<tag>

上传redis镜像到harbor

docker push 172.28.168.223:5180/library/redis:5.0.10

在这里插入图片描述
登录harbor控制台查看,在library项目下有redis镜像
在这里插入图片描述

9.3 harbor拉取镜像

先删除上面本地的redis镜像172.28.168.223:5180/library/redis:5.0.10

docker rmi 172.28.168.223:5180/library/redis:5.0.10

拉取镜像的命令

# image_name是要拉取的镜像名称,project_name是Harbor中的项目名称,tag是镜像的版本号
docker pull <harbor_host>/<project_name>/<image_name>:<tag>

拉取redis镜像

docker pull 172.28.168.223:5180/library/redis:5.0.10

在这里插入图片描述

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

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

相关文章

PermissionError: [Errno 13] Permission denied: ‘xx.xlsx‘的解决办法

我在转换文件的时候遇到这个报错&#xff0c;原因是文件名与已有文件名重复了 解决办法很简单&#xff0c;如下图把" " 里的名字换成不重复的&#xff0c;再次允许代码&#xff0c;会恢复正常

ue引擎游戏开发笔记(37)——实现敌人接收攻击伤害,并作出反应

1.需求分析&#xff1a; 现在已经显示造成实际伤害&#xff0c;但敌人对实际伤害并未产生反馈&#xff0c;例如还击&#xff0c;或者死亡倒地等等&#xff0c;实现敌人对于受击的反馈。 2.操作实现&#xff1a; 1.思路&#xff1a;在动画蓝图中添加死亡动画&#xff0c;并通过…

【姿态解算与滤波算法】

姿态解算 一、主线 姿态表示方式&#xff1a;矩阵表示&#xff0c;轴角表示&#xff0c;欧拉角表示&#xff0c;四元数表示。 惯性测量单元IMU&#xff08;Inertial Measurement Unit&#xff09;&#xff1a;MPU6050芯片&#xff0c;包含陀螺仪和加速度计&#xff0c;分别测…

winhex工具,将文件转换为16进制数据放入代码。

今天介绍winhex工具&#xff0c;可以将任何内容读取读取为16进制数据。下面看下效果。 下载链接&#xff1a; WinHex: Hex Editor & Disk Editor, Computer Forensics & Data Recovery Software 一、WinHex打开文件 我们要打开的文件&#xff1a; 打开后&#xff1a; 我…

服务器远程桌面局域网连接不上的解决方法

在企业网络环境中&#xff0c;服务器远程桌面局域网连接不上是一个常见且棘手的问题。这种问题可能导致工作效率下降&#xff0c;甚至影响业务运营。因此&#xff0c;我们需要采取专业的方法来解决这一问题。 服务器远程桌面局域网连接不上的解决方法&#xff1a; 1、确保服务器…

SQL注入-通达OA SQL注入漏洞【CVE-2023-4166】原理及检测思路分析

1、漏洞描述 通达OA中发现一个漏洞&#xff0c;并被列为严重漏洞。该漏洞影响文件general/system/seal_manage/dianju/delete_log.php的未知代码。对参数 DELETE_STR 的操作会导致 sql 注入。 2、影响范围 通达OA版本11.10之前 3、复现环境 FOFA搜索&#xff1a;app"TDX…

解锁网站SEO优势,百度站长工具助您一臂之力(百度站长平台还提供了哪些工具供seo人员使用?)

在当今数字化时代&#xff0c;网站已经成为企业宣传、产品销售、信息发布的主要渠道之一。有着再好的网站&#xff0c;如果在百度等搜索引擎中无法被用户搜索到&#xff0c;那就等于白搭。因此&#xff0c;网站的SEO优化显得尤为重要。而作为国内最大的搜索引擎&#xff0c;百度…

LoRa模块学习

什么是LoRa调制 LoRa&#xff08;Long Range&#xff0c;远距离&#xff09;是一种调制技术&#xff0c;与同类技术相比&#xff0c;提供更长的通信距离。调制是基于扩频技术&#xff0c;线性调制扩频&#xff08;CSS&#xff09;的一个变种&#xff0c;具有前向纠错&#xff…

安装SQL Server详细教程_sql server安装教程

一&#xff0c;SQL Server数据库安装 1.首先&#xff0c;下载安装程序 &#xff08;1&#xff09;从网盘下载安装exe 点击此处直接下载 &#xff08;2&#xff09;从官网下载安装exe文件 在官网选择Developer进行下载 2.开始安装 双击安装程序&#xff0c;开始安装 这里直…

python-pytorch seq2seq+attention笔记0.5.00

python-pytorch seq2seq+attention笔记0.5.00 1. LSTM模型的数据size2. 关于LSTM的输入数据包含hn和cn时,hn和cn的size3. LSTM参数中默认batch_first4. Attention机制的三种算法5. 模型的编码器6. 模型的解码器7. 最终模型8. 数据的准备9. 遇到的问题10. 完整代码1. LSTM模型的…

PHP数值数组讲解,for循环及函数 遍历数组获取元素

源码 <?phpheader("Content-Type:text/html;Charsetutf8");//创建数值数组$arr1 array();//简化创建语法 $arr2 [];//通过索引为数组添加不同类型的元素$arr1[0] "zhangsan" ;//也可以乱序添加元素$arr1[2] 12 ;$arr1[1] true ; //true输出为1 f…

搭建vue3组件库(四): 样式库搭建

文章目录 1. 样式目录文件架构2. SCSS 样式变量2.1 设置颜色 SCSS 变量2.2 设置多种类型主题2.3 生成全局类型主题 SCSS 变量2.4 分组生成 SCSS 变量 1. 样式目录文件架构 packages/theme-chalk 目录结构&#xff1a; ├── packages │ ├── theme-chalk │ │ ├─…

excel表格里,可以把百分号放在数字前面吗?

在有些版本里是可以的&#xff0c;这样做&#xff1a; 选中数据&#xff0c;鼠标右键&#xff0c;点击设置单元格格式&#xff0c;切换到自定义&#xff0c;在右侧栏输入%0&#xff0c;点击确定就可以了。 这样设置的好处是&#xff0c;它仍旧是数值&#xff0c;并且数值大小没…

说一下 hibernate 的缓存机制?

Hibernate 的缓存机制是为了提高应用程序的性能&#xff0c;通过减少对数据库物理数据源的访问频次而设计的。Hibernate 的缓存主要可以分为两个级别&#xff1a;一级缓存&#xff08;也称为 Session 级别的缓存&#xff09;和二级缓存&#xff08;也称为 SessionFactory 级别的…

Veeam - 数据保护和管理解决方案_Windows平台部署备份还原VMware手册

Veeam - - 数据保护和管理解决方案 Veeam Backup & Replication Console Veeam Data Platform Veeam Backup & Replication是一款强大的虚拟机备份、恢复和复制解决方案 安全备份、干净恢复和数据弹性 — 即时交付 在混合云中随时随地管理、控制、备份和恢复您的所有数…

ARM时钟树结构(GD32)

时钟树的简易框图 初始化配置系统时钟 配置系统初始化时钟&#xff08;参考手册&#xff09; 对应hal库函数 使用72MHz的系统时钟 do -----------while&#xff08;0&#xff09;的使用方法 系统时钟 #include <stdint.h> #include "gd32f30x.h"int main(void)…

配置Docker对象与管理守护进程

前言&#xff1a;本博客仅作记录学习使用&#xff0c;部分图片出自网络&#xff0c;如有侵犯您的权益&#xff0c;请联系删除 本章节的快速目录导航&#xff1a; 一、配置Docker对象 1.1、Docker对象的标记 1.2、格式化命令和日志的输出 二、示例&#xff1a; 2.1、管理…

(delphi11最新学习资料) Object Pascal 学习笔记---第11章第2节 (接口的多态性)

11.2.4 接口的多态性 ​ 在上一节中&#xff0c;我们看到了如何定义多个接口&#xff0c;并让一个类实现其中的两个接口。当然&#xff0c;这可以扩展到任何数量。您还可以创建接口的层次结构&#xff0c;因为一个接口可以继承另一个接口&#xff1a; ITripleJumper interfa…

开源RAG框架汇总

前言 本文搜集了一些开源的基于LLM的RAG&#xff08;Retrieval-Augmented Generation&#xff09;框架&#xff0c;旨在吸纳业界最新的RAG应用方法与思路。如有错误或者意见可以提出&#xff0c;同时也欢迎大家把自己常用而这里未列出的框架贡献出来&#xff0c;感谢~ RAG应用…

【代码随想录37期】Day04 两两交换链表中的节点、删除链表的倒数第N个节点、链表相交、环形链表II

两两交换链表中的节点 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x) : val(x), next(nullptr) {}* ListNode(int x, ListNode *next) : val(x), ne…