Docker-harbor私有仓库部署与管理

news2024/12/23 1:11:56

目录

前言

一、Harbor概述

二、Harbor的特性

三、Harbor的构成

四、Harbor构建Docker私有仓库 

环境配置

部署Harbor服务 

 物理机访问server IP

添加项目并填写项目名称 

通过127.0.0.1来登陆和推送镜像

其他客户端上传镜像到Harbor

维护管理Harbor

创建Harbor用户


前言

Docker 官方提供了一个搭建私有仓库的镜像 registry ,运行该镜像的容器并且对外暴露5000端口就ok了。通常我们在docker拉取的镜像都是在docker hub或quay.io等公有仓库获取,那么在实际工作中,每个公司如果使用到docker,那么肯定是要搭建自己的私有仓库。那么接下来就通过docker提供的registry镜像来搭建我们自己的私有仓库。

一、Harbor概述

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

二、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做了封装,扩展了自己的业务模板。

三、Harbor的构成

 

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

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

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

3.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进行请求。

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

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

6.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地址软件
serverCentOS7.6192.168.23.10docker、docker-compose、harbor-offline-v1.1.2
clientCentOS7.6192.168.23.20docker

部署Harbor服务 

tar zxvf harbor-offline-installer-v1.2.2.tgz -C /usr/local/

==配置Harbor参数文件==
vim /usr/local/harbor/harbor.cfg

==第5行修改==
hostname = 192.168.23.10

sh /usr/local/harbor/install.sh

docker ps
docker images

 

 物理机访问server IP

192.168.23.10
用户名:admin
密码:Harbor12345

添加项目并填写项目名称 

 

 

通过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/liq1/tomcat:v1

#上传镜像到Harbor
docker push 127.0.0.1/liq1/tomcat:v1

 

 

 查看图形化界面

 

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

其他客户端上传镜像到Harbor

docker login -u admin -p Harbor12345 http://192.168.23.10

 解决方法

vim /usr/lib/systemd/system/docker.service
添加  --insecure-registry 192.168.23.10

systemctl daemon-reload
systemctl restart docker

 

 ​​​​​​​

docker pull nginx   #下载公有仓库nginx镜像
docker tag nginx:latest 192.168.23.10/liq1/nginx:v1   #打上标签
docker push 192.168.23.10/liq1/nginx:v1   #上传镜像

 

 图形界面查看​​​​​​​

 

 

维护管理Harbor

可以使用 docker-compose 来管理 Harbor。一些有用的命令如下所示,必须在与
docker-compose.yml 相同的目录中运行。

修改 Harbor.cfg 配置文件

1.要更改 Harbour 的配置文件时,请先停止现有的 Harbour 实例并更新 Harbor.cfg;
2.然后运行 prepare 脚本来填充配置;
3.最后重新创建并启动 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.23.10
docker login 192.168.23.10
liq2
Harbor12345

docker images
docker rmi 192.168.23.10/liq1/nginx:v1
docker pull 192.168.23.10/liq1/nginx:v1

 

 图形化界面访问

日志中都有记录

 

 

 

 

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

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

相关文章

JavaWeb_JavaScript

一、简介 JavaScript 是一门跨平台、面向对象的脚本语言,而Java语言也是跨平台的、面向对象的语言,只不过Java是编译语言,是需要编译成字节码文件才能运行的;JavaScript是脚本语言,不需要编译,由浏览器直接…

GPT-3是精神病患者吗?从心理学角度评估大型语言模型

原文链接:https://www.techbeat.net/article-info?id4494 作者:seven_ 20世纪60年代,麻省理工学院人工智能实验室的Joseph Weizenbaum编写了第一个自然语言处理(NLP)聊天机器人ELIZA[1],ELIZA通过使用模式…

linux Redis 集群搭建

在单例模式下继续执行,新增文件夹将之前解压后的文件复制到新增的文件夹中修改配置文件,并放入bin中bind 10.88.99.251(ip设置)protected-mode yes(默认yes,开启保护模式,限制为本地访问&#x…

ASEMI整流桥GBU808在选型的过程中需要注意几点

编辑-Z 型号:GBU808 最大重复峰值反向电压(VRRM):800V 最大RMS电桥输入电压(VRMS):560V 最大直流阻断电压(VDC):800V 最大平均正向整流输出电流&#xf…

为2023年做好 IT 安全防御准备

随着网络安全威胁形势的不断演变,安全运营中心 (SOC) 团队在新年伊始花时间审查他们的战略和关键保护措施。 SOC 团队明白,有效的安全性永远不会是一劳永逸的项目。现有的工具和服务需要不断监控和更新,以确保它们能够抵御当前和新出现的威…

测试人员提高业务掌握度的方案

测试人员除了掌握测试相关技术,比如测试流程、测试用例编写思路、自动化脚本的编写、维护之外,还需要对自己所测试的具体业务进行学习和掌握。 只有这样,才能去涉及灰盒、白盒测试,在测试执行过程中,提高自己分析、定位…

17《Protein Actions Principles and Modeling》-《蛋白质作用原理和建模》中文分享

​结合亲和力具有自由能的分子基础理论:在本章中,我们使用K来衡量结合亲和力。我们可以通过结合曲线(binding curves,)来像这样定义一个结合作用力。这样的曲线能给出配体结合的数量与溶液中配体数量的关系。而结合亲和力K也存在关于分子结构以及能量基础…

zabbix6.0配置邮件告警

1、 配置发送邮件服务器(管理媒介Email) 2、 创建用户用来接收邮件告警(管理用户创建用户) 用户 报警媒介 权限 3、 设置触发器报警后的动作(配置动作触发器动作创建动作) 邮件报警是基…

【C++初阶】六、STL---string模拟实现

目录 一、模拟实现接口总览 二、string模拟实现 2.1 构造函数 2.2 析构函数 2.3 拷贝构造函数 2.3.1 传统写法 2.3.2 现代写法 2.4 赋值运算符重载 2.4.1 传统写法 2.4.2 现代写法 2.5 iterator 2.5.1 begin 2.6 Capacity 2.6.1 size 2.6.2 capacity 2.6.2 emp…

Maven的下载安装配置IDEA详细过程

1. 去官网下载好并且放在同一文件夹下面 下载maven安装包,解压即可使用 (下载路径)http://maven.apache.org/download.cgi 2. maven配置环境变量 MAVEN_HOME D:\IT\Java\apache-maven-3.8.4:这个写你自己放的目录下 进Path新增 %…

推荐系统之召回集读取服务

5.4 召回集读取服务 学习目标 目标 无应用 无 5.4.1 召回集读取服务 添加一个server的目录 会添加推荐中心,召回读取服务,模型排序服务,缓存服务这里先添加一个召回集的结果读取服务recall_service.pyutils.py中装有自己封装的hbase数据库读…

【GD32F427开发板试用】GD32的ISP进行程序烧录

本篇文章来自极术社区与兆易创新组织的GD32F427开发板评测活动,更多开发板试用活动请关注极术社区网站。作者:羁傲不驯ぃ 什么是ISP? ISP是In-System Program的缩写,即在系统编程。通常我们开发使用仿真器来下载和调试程序,当固…

linux下安装elasticsearch

一:安装JDK1:java安装地址最新版:https://www.oracle.com/java/technologies/javase-downloads.html历史版:https://www.oracle.com/java/technologies/oracle-java-archive-downloads.html2:安装java(1):安…

vue使用echarts画可视化大屏

画出来的页面效果如下: 一、布局 整体使用element-ui的layout布局,即el-rowel-col,便于自适应 二、配置跨域 首先创建个vue.config.js的文件 module.exports {lintOnSave: false,devServer: {proxy: { //配置跨域/: {target: , //填写…

Python——matplotlib绘图可视化知识点整理

无论你工作在什么项目上,IPython都是值得推荐的。利用ipython --pylab,可以进入PyLab模式,已经导入了matplotlib库与相关软件包(例如Numpy和Scipy),额可以直接使用相关库的功能。 本文作为学习过程中对matplotlib一些…

Oracle Blogs上的Flashback文章

Oracle Database und Temporal Validity Temporal Validity和Flashback的区别&#xff1f;两者通常配合使用。 延伸阅读&#xff1a;Oracle 数据库和时间有效性 时间有效性也称为 Flashback Time Travel。 显示不可见的列&#xff1a; set colinvisible on desc <table_…

PyQt5开发环境搭建 1.3 Python语法练习

第一组练习1阅读理解。输入红色框框中命令。说出文中大致意思。&#xff08;限30个字&#xff09;解&#xff1a;点击运行之后会跳到一个网站https://xkcd.com/353/练习2建立如下py文件并运行&#xff0c;贴出在Eric6下运行输出结果&#xff08;注意文件名中的bkjtest用自己的姓…

NSSCTF Round#7部分wp

Web ec_RCE 源码: <!-- A EZ RCE IN REALWORLD _ FROM CHINA.TW --> <!-- By 探姬 --> <?PHPif(!isset($_POST["action"]) && !isset($_POST["data"]))show_source(__FILE__);putenv(LANGzh_TW.utf8); $action $_POST["a…

layui遇到的一些问题

目录一、layui nav 菜单栏默认收缩二、layui 数据表格 单元格 颜色设置三、layui表格没有数据的时候&#xff0c;表头没有横向滚动条四、layui layer.open 弹窗全屏显示五、layui表格通过点击tr改变这一行的颜色六、 layer.open弹框弹出后父页面滚动问题七、LayUI下拉框中取值和…

Cuba勒索软件深度分析及防护建议

0 1. Cuba勒索软件的部署方式 Cuba勒索软件家族于2019年12月首次浮出水面。此后&#xff0c;该勒索软件家族背后的攻击者改变了策略和工具&#xff0c;成为2022年成为更普遍的威胁。该勒索软件历来通过Hancitor分发&#xff0c;通常通过恶意附件传递。 Hancitor也被称为Chani…