11.Docker 之分布式仓库 Harbor

Docker 之分布式仓库 Harbor

  • Docker 之分布式仓库 Harbor
    • 1. Harbor 组成
    • 2. 安装 Harbor

Docker 之分布式仓库 Harbor

Harbor 是一个用于存储和分发 Docker 镜像的企业级 Registry 服务器,由 VMware 开源,其通过添加一些企业必需的功能特性,例如安全、标识和管理等,扩展了开源 Docker Distribution。作为一个企业级私有 Registry 服务器,Harbor 提供了更好的性能和安全。提升用户使用 Registry 构建和运行环境传输镜像的效率。Harbor 支持安装在多个 Registry 节点的镜像资源复制,镜像全部保存在私有 Registry 中, 确保数据和知识产权在公司内部网络中管控,另外,Harbor 也提供了高级的安全特性,诸如用户管理,访问控制和活动审计等

vmware 官方开源服务: https://github.com/vmware/

harbor 官方github 地址: https://github.com/goharbor/harbor

harbor 官方网址: https://goharbor.io/

harbor 官方文档: https://goharbor.io/docs/

Harbor 功能官方介绍

  • 基于角色的访问控制: 用户与 Docker 镜像仓库通过“项目”进行组织管理,一个用户可以对多个镜像仓库在同一命名空间(project)里有不同的权限
  • 镜像复制: 镜像可在多个 Registry 实例中复制(同步)。尤其适合于负载均衡,高可用,混合云和多云的场景
  • 图形化用户界面: 用户可以通过浏览器来浏览,检索当前 Docker 镜像仓库,管理项目和命名空间
  • AD/LDAP 支: Harbor 可以集成企业内部已有的 AD/LDAP,用于鉴权认证管理
  • 审计管理: 所有针对镜像仓库的操作都可以被记录追溯,用于审计管理
  • 国际化: 已拥有英文、中文、德文、日文和俄文的本地化版本。更多的语言将会添加进来
  • RESTful API: 提供给管理员对于 Harbor 更多的操控, 使得与其它管理软件集成变得更容易
  • 部署简单: 提供在线和离线两种安装工具, 也可以安装到 vSphere 平台(OVA 方式)虚拟设备

1. Harbor 组成

harbor 是由很多容器组成实现完整功能

  • Proxy: 对应启动组件 nginx。它是一个 nginx 反向代理,代理 Notary client(镜像认证)、Docker client(镜像上传下载等)和浏览器的访问请求(Core Service)给后端的各服务
  • UI(Core Service): 对应启动组件 harbor-ui。底层数据存储使用 mysql 数据库,主要提供了四个 子功能:
    • UI: 一个 web 管理页面 ui
    • API: Harbor 暴露的 API 服务
    • Auth: 用户认证服务,decode 后的 token 中的用户信息在这里进行认证;auth 后端可以接 db、ldap、uaa 三种认证实现
    • Token服务: 负责根据用户在每个 project 中的 role 来为每一个 docker push/pull 命令发布一个 token,如果从 docker client 发送给 registry 的请求没有带 token, registry 会重定向请求到 token 服务创建 token
  • Registry: 对应启动组件 registry。负责存储镜像文件,和处理镜像的 pull/push 命令。Harbor 对镜像进行强制的访问控制,Registry 会将客户端的每个 pull、push 请求转发到 token 服务来获取有效的 token
  • Admin Service: 对应启动组件 harbor-adminserver。是系统的配置管理中心附带检查存储用量, ui 和 jobserver 启动时候需要加载 adminserver 的配置
  • Job Sevice: 对应启动组件 harbor-jobservice。负责镜像复制工作的,他和 registry 通信,从一个 registry pull 镜像然后 push 到另一个 registry,并记录 job_log
  • Log Collector: 对应启动组件 harbor-log。日志汇总组件,通过 docker 的 log-driver 把日志汇总到 一起
  • DB: 对应启动组件 harbor-db,负责存储 project、 user、 role、replication、image_scan、 access 等的 metadata 数据

2. 安装 Harbor

下载地址: https://github.com/goharbor/harbor/releases

首先确保 docker 和 docker compose 已安装,并且 docker compose 必须先于 harbor 安装,否则会报错误

注意:docker、 docker compose、 harbor 版本要符合要求不然会安装失败,建议都用最新版本

以 http 模式安装 harbor

下载 Harbor 安装包并解压缩

# 下载离线完整安装包,推荐使用,下载好上传到 /root 目录
[root@Ubuntu2204 ~]#pwd
/root
[root@Ubuntu2204 ~]#ls
harbor-offline-installer-v2.12.2.tgz 

# 解压缩离线包
[root@Ubuntu2204 ~]#mkdir /apps
[root@Ubuntu2204 ~]#tar -xvf harbor-offline-installer-v2.12.2.tgz -C /apps/
[root@Ubuntu2204 ~]#mv /apps/harbor/harbor.yml.tmpl /apps/harbor/harbor.yml

# 只需要修改下面两行 并把 https 相关的先注释了
[root@Ubuntu2204 ~]#vim /apps/harbor/harbor.yml

hostname: 10.0.0.100			# 修改此行,指向当前主机 IP 或 FQDN
harbor_admin_password: 123456	# 修改此行指定 harbor 登录用户 admin 的密码

先把这几行注释了,先不走 https
 12 # https related config
 13 #https:
 14   # https port for harbor, default is 443
 15  # port: 443
 16   # The path of cert and key files for nginx
 17   #certificate: /your/certificate/path
 18   #private_key: /your/private/key/path
 19   # enable strong ssl ciphers (default: false)
 20   # strong_ssl_ciphers: false

# 运行 harbor 安装脚本
[root@Ubuntu2204 ~]#/apps/harbor/install.sh

#  实现开机自动启动 harbor
方法1: 通过 service 文件实现

[root@Ubuntu2204 ~]#vim /lib/systemd/system/harbor.service
[Unit]
Description=Harbor
After=docker.service systemd-networkd.service systemd-resolved.service
Requires=docker.service
Documentation=http://github.com/vmware/harbor

[Service]
Type=simple
Restart=on-failure
RestartSec=5
ExecStart=/usr/local/bin/docker-compose -f  /apps/harbor/docker-compose.yml up
ExecStop=/usr/local/bin/docker-compose -f /apps/harbor/docker-compose.yml down

[Install]
WantedBy=multi-user.target

[root@Ubuntu2204 ~]#systemctl daemon-reload; systemctl enable harbor

方法2: 通过 rc.local 实现
[root@Ubuntu2204 ~]#vim /etc/rc.local
#!/bin/bash
cd /apps/harbor
/usr/local/bin/docker-compose up

[root@Ubuntu2204 ~]#chmod +x /etc/rc.local

安装成功后在浏览器输入本机 IP 地址访问

账号:admin

密码:123456

在这里插入图片描述

建立项目

harbor上必须先建立项目,才能上传镜像

在这里插入图片描述

在这里插入图片描述

命令行登录 harbor

重新找一台安装 docker 的主机进行测试

[root@Ubuntu2204 ~]#cat /etc/docker/daemon.json 
{
    "registry-mirrors": [
        "https://docker.1ms.run",
        "https://docker.m.daocloud.io"
        ],
    "insecure-registries": ["10.0.0.110"] 	# harbor IP 地址
}

[root@Ubuntu2204 ~]#systemctl daemon-reload; systemctl restart docker

# 登录 harbor 仓库
[root@Ubuntu2204 ~]#docker login 10.0.0.110
Username: admin
Password: 
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

# 查看存储 Docker 的认证信息等
[root@Ubuntu2204 ~]#cat .docker/config.json 
{
	"auths": {
		"10.0.0.110": {
			"auth": "YWRtaW46MTIzNDU2"
		}
	}
}

# 给本地镜像打标签并上传到 Harbor
[root@Ubuntu2204 ~]#docker tag alpine:latest 10.0.0.110/test/alpine:v1.0
[root@Ubuntu2204 ~]#docker push 10.0.0.110/test/alpine:v1.0

注意:上传镜像前,必须先登录 harbor
	 修改 images 的名称,不修改成指定格式无法将镜像上传到 harbor 仓库
	 Harbor主机IP/项目名/image名:版本
	 如果不事先建立项目,会上传镜像失败

查看 alpine:v1.0 上传成功

在这里插入图片描述

下载 Harbor 的镜像

重新找第二台安装 docker 的主机进行测试

下载前必须修改 docker 的 service 文件,加入harbor服务器的地址才可以下载

无需登录,即可下载镜像

[root@Ubuntu2204 ~]#cat /etc/docker/daemon.json 
{
    "insecure-registries": ["10.0.0.110"] 	# harbor IP 地址
}

[root@Ubuntu2204 ~]#systemctl daemon-reload; systemctl restart docker
[root@Ubuntu2204 ~]#docker pull 10.0.0.110/test/alpine:v1.0

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

(一)趣学设计模式 之 单例模式!

目录 一、啥是单例模式?二、为什么要用单例模式?三、单例模式怎么实现?1. 饿汉式:先下手为强! 😈2. 懒汉式:用的时候再创建! 😴3. 枚举:最简单最安全的单例&a…

Chrome 浏览器(版本号49之后)‌解决跨域问题

谷歌浏览器解决跨域问题 如何查看 Chrome 浏览器版本号 打开 Chrome 浏览器点击右上角的三个点,打开“设置”页面 点击“关于Chrome” 查看版本号 解决跨域操作:windows系统为例 方法一:命令行启动方式(最简单) …

python中的JSON数据格式

文章目录 什么是json主要功能Python数据和Json数据的相互转化 什么是json JSON是一种轻量级的数据交互格式。可以按照JSON指定的格式去组织和封装数据。JSON本质上是一个带有特定格式的字符串。 主要功能 json就是一种在各个编程语言中流通的数据格式,负责不同编…

汽车智能制造企业数字化转型SAP解决方案总结

一、项目实施概述 项目阶段划分: 蓝图设计阶段主数据管理方案各模块蓝图设计方案下一阶段工作计划 关键里程碑: 2022年6月6日:项目启动会2022年12月1日:系统上线 二、总体目标 通过SAP实施,构建研产供销协同、业财一…

JavaWeb-在idea中配置Servlet项目

文章目录 在idea中进行Servlet项目的配置(较新的idea版本)创建一个空的JavaSE项目(Project)创建一个普通的JavaSE板块(module)添加Web项目的配置定义一个对象模拟实现接口在web.xml中配置路径映射配置项目到Tomcat服务器启动Tomcat服务器进行测试 在idea中进行Servlet项目的配置…

【深度学习神经网络学习笔记(二)】神经网络基础

神经网络基础 神经网络基础前言1、Logistic 回归2、逻辑回归损失函数3、梯度下降算法4、导数5、导数计算图6、链式法则7、逻辑回归的梯度下降 神经网络基础 前言 Logistic 回归是一种广泛应用于统计学和机器学习领域的广义线性回归模型,主要用于解决二分类问题。尽…

力扣hot100 —— 电话号码字母组合; 子集 (非回溯做法)简单易懂

由于博主对回溯也不是很熟悉,这里提出一种简单易懂的解法(有点暴力) 解题思路: 每个数字对应有自己的字母串; 首先遍历将每个字母存入也就是 res{{a},{b},{c}} 然后遍历后续数子对应的字母,让每个字母与…

React 源码揭秘 | 更新队列

前面几篇遇到updateQueue的时候,我们把它先简单的当成了一个队列处理,这篇我们来详细讨论一下这个更新队列。 有关updateQueue中的部分,可以见源码 UpdateQueue实现 Update对象 我们先来看一下UpdateQueue中的内容,Update对象&…

解锁养生密码,拥抱健康生活

在快节奏的现代生活中,养生不再是一种选择,而是我们保持活力、提升生活质量的关键。它不是什么高深莫测的学问,而是一系列融入日常的简单习惯,每一个习惯都在为我们的健康加分。 早晨,当第一缕阳光洒进窗户&#xff0c…

muduo网络库2

Muduo网络库:底层实质上为Linux的epoll pthread线程池,且依赖boost库。 muduo的网络设计核心为一个线程一个事件循环,有一个main Reactor负载accept连接,然后把连接分发到某个sub Reactor(采用轮询的方式来选择sub Reactor)&…

【大语言模型】【整合版】DeepSeek 模型提示词学习笔记(散装的可以看我之前的学习笔记,这里只是归纳与总结了一下思路,内容和之前发的差不多)

以下是个人笔记的正文内容: 原文在FlowUs知识库上,如下截图。里面内容和这里一样,知识排版好看一点 一、什么是 DeepSeek 1. DeepSeek 简介 DeepSeek 是一家专注于通用人工智能(AGI)的中国科技公司,主攻大模型研发与…

AWQ和GPTQ量化的区别

一、前言 本地化部署deepseek时发现,如果是量化版的deepseek,会节约很多的内容,然后一般有两种量化技术,那么这两种量化技术有什么区别呢? 二、量化技术对比 在模型量化领域,AWQ 和 GPTQ 是两种不同的量…

ARM Cortex-M3 技术解析:核寄存器R1-R15介绍及使用

ARM Cortex-M3 技术解析:核寄存器R1-R15介绍及使用 作为嵌入式开发领域的经典处理器内核,ARM Cortex-M3(CM3)凭借其高效能、低功耗和丰富特性,在工业控制、物联网、消费电子等领域广泛应用。而内核寄存器是我们调试代…

ROS ur10机械臂添加140夹爪全流程记录

ROS ur10机械臂添加140夹爪 系统版本:Ubuntu20.04 Ros版本:noetic Moveit版本:moveit-noetic 参考博客: ur3robotiq ft sensorrobotiq 2f 140配置rviz仿真环境_有末端力传感器的仿真环境-CSDN博客 UR5机械臂仿真实例&#xf…

Web自动化之Selenium添加网站Cookies实现免登录

在使用Selenium进行Web自动化时,添加网站Cookies是实现免登录的一种高效方法。通过模拟浏览器行为,我们可以将已登录状态的Cookies存储起来,并在下次自动化测试或爬虫任务中直接加载这些Cookies,从而跳过登录步骤。 Cookies简介 …

【落羽的落羽 数据结构篇】树、二叉树

文章目录 一、树1. 树的概念和结构2. 树的相关术语 二、二叉树1. 概念与结构2. 满二叉树3. 完全二叉树4. 二叉树的性质5. 二叉树的存储结构 一、树 1. 树的概念和结构 之前我们学习了线性表,今天我们再来接触一种全新的数据结构——树。 树是一种非线性的数据结构…

数据结构(陈越,何钦铭) 第四讲 树(中)

4.1 二叉搜索树 4.1.1 二叉搜索树及查找 Position Find(ElementTyoe X,BinTree BST){if(!BST){return NULL;}if(X>BST->Data){return Find(X,BST->Right)}else if(X<BST->Data){return Find(X,BST->Left)}else{return BST;} } Position IterFind(ElementTyp…

【原创工具】同文件夹PDF文件合并 By怜渠客

【原创工具】同文件夹PDF文件合并 By怜渠客 原贴&#xff1a;可批量合并多个文件夹内的pdf工具 - 吾爱破解 - 52pojie.cn 他这个存在一些问题&#xff0c;并非是软件内自主实现的PDF合并&#xff0c;而是调用的pdftk这一工具&#xff0c;但楼主并没有提供pdftk&#xff0c;而…

Kafka系列之:记录一次源头数据库刷数据,造成数据丢失的原因

Kafka系列之:记录一次源头数据库刷数据,造成数据丢失的原因 一、背景二、查看topic日志信息三、结论四、解决方法一、背景 源头数据库在很短的时间内刷了大量的数据,部分数据在hdfs丢失了 理论上debezium数据采集不会丢失,就需要排查数据链路某个节点是否有数据丢失。 数据…