热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【Docker】Harbor入门与安装

【Docker】Harbor入门与安装-1Harbor的概述Harbor是一个开放源代码的受信任云原生注册表项目,用于存储,签名和扫描内容。Harbor通过添加用户通常需要的功能

1 Harbor的概述

Harbor是一个开放源代码的受信任云原生注册表项目,用于存储,签名和扫描内容。Harbor通过添加用户通常需要的功能(例如安全性,身份和管理)扩展了开源Docker Distribution。使注册表更接近于构建和运行环境可以提高镜像传输效率。Harbor支持在注册表之间复制镜像,还提供高级安全功能,例如用户管理,访问控制和活动审核。

2 Harbor的特点

  • 云原生注册表:Harbor支持容器镜像和Helm图表,可作为容器原生运行时和编排平台之类的云原生环境的注册表。
  • 基于角色的访问控制:用户通过项目访问不同的存储库,并且用户可以对项目下的降序或Helm图表具有不同的权限。
  • 基于策略的复制:可以使用过滤器(存储库,标签和标签)基于策略在多个注册表实例之间复制(同步)镜像和图表。如果遇到任何错误,Harbor会自动重试复制。这可用于协助负载平衡,实现高可用性并促进混合和多云场景中的多数据中心部署。
  • 漏洞扫描:Harbor会定期扫描映像中的漏洞,并进行策略检查以防止部署易受攻击的映像。
  • LDAP / AD支持:Harbor与现有企业LDAP / AD集成以进行用户身份验证和管理,并支持将LDAP组导入Harbor,然后可以将其授予特定项目的权限。
  • OIDC支持:Harbor利用OpenID Connect(OIDC)来验证由外部授权服务器或身份提供者认证的用户的身份。可以启用单点登录以登录Harbor门户。
  • 镜像删除和垃圾收集:系统管理员可以运行垃圾收集作业,以便可以删除镜像(悬挂的清单和未引用的Blob),并可以定期释放其空间。
  • 公证:使用Docker Content Trust(利用公证)支持对容器映像进行签名,以确保真实性和出处。此外,还可以激活防止部署未签名映像的策略。
  • 图形界面接口:用户可以轻松浏览,搜索存储库和管理项目。
  • 审核:通过日志跟踪对存储库的所有操作。
  • RESTful API:提供RESTful API有助于管理操作,并且易于与外部系统集成。嵌入式Swagger UI可用于探索和测试API。
  • 易于部署:可以通过Docker compose和Helm Chart部署Harbor,并且最近还添加了Harbor Operator。

3 Harbor的架构设计

Harbor利用nginx的代理,通过代理访问Registry和核心服务,进而访问到数据库和作业服务,作业服务主要是做镜像复制。核心服务里的webhook主要做用户认证和一些回调的工作。Registery负责存储docker镜像,处理上传和下载命令,用户的docker pull/push请求需要携带合法的token。数据库中会存储用户权限、审计日志、镜像分组信息等数据。Log控制器监控Harbor的运行,收集子组件的日志。

4 Harbor高可用部署

4.1 双主复制方案

HarborA中的项目会同步复制到HarborB,HarborB的也会复制到HarborB,Nginx做负载均衡,可以请求到HarborA和HarborB,无论是HarborA停运还是HarborB停运,另外一个节点都可以提供服务。

4.2 环境准备

准备三个节点

节点IP地址
Master1192.168.3.183
Worker1192.168.3.182
Worker2192.168.3.181

安装harbor

注意docker和harbor版本的匹配问题

  1. 下载harbor的压缩包,解压缩:tar -xvf harbor-offline-installer-v1.6.0.tgz
  2. 修改harbor.cfg文件中的hostname为ip地址
  3. 安装harbor:sh install.sh。报错:✖ Need to install docker-compose(1.7.1+) by yourself first and run this script again.
  4. 安装docker-compose
[root@jxd-worker2 harbor]# mv docker-compose-Linux-x86_64-1.22.0 /usr/local/bin/docker-compose
[root@jxd-worker2 harbor]# chmod +x /usr/local/bin/docker-compose [root@jxd-worker2 harbor]# docker-compose --version
docker-compose version 1.22.0, build f46880fe
  1. 重新安装harbor,报错:80端口被占用。解决方法

参考文献

Harbor的Github仓库


推荐阅读
  • 在项目开发过程中,掌握一些关键的Linux命令至关重要。例如,使用 `Ctrl+C` 可以立即终止当前正在执行的命令;通过 `ps -ef | grep ias` 可以查看特定服务的进程信息,包括进程ID(PID)和JVM参数(如内存分配和远程连接端口);而 `netstat -apn | more` 则用于显示网络连接状态,帮助开发者监控和调试网络服务。这些命令不仅提高了开发效率,还能有效解决运行时的各种问题。 ... [详细]
  • 秒建一个后台管理系统?用这5个开源免费的Java项目就够了
    秒建一个后台管理系统?用这5个开源免费的Java项目就够了 ... [详细]
  • 作为140字符的开创者,Twitter看似简单却异常复杂。其简洁之处在于仅用140个字符就能实现信息的高效传播,甚至在多次全球性事件中超越传统媒体的速度。然而,为了支持2亿用户的高效使用,其背后的技术架构和系统设计则极为复杂,涉及高并发处理、数据存储和实时传输等多个技术挑战。 ... [详细]
  • 本文介绍了 Go 语言中的高性能、可扩展、轻量级 Web 框架 Echo。Echo 框架简单易用,仅需几行代码即可启动一个高性能 HTTP 服务。 ... [详细]
  • 2021年Java开发实战:当前时间戳转换方法详解与实用网址推荐
    在当前的就业市场中,金九银十过后,金三银四也即将到来。本文将分享一些实用的面试技巧和题目,特别是针对正在寻找新工作机会的Java开发者。作者在准备字节跳动的面试过程中积累了丰富的经验,并成功获得了Offer。文中详细介绍了如何将当前时间戳进行转换的方法,并推荐了一些实用的在线资源,帮助读者更好地应对技术面试。 ... [详细]
  • 本文探讨了使用Python进行微服务架构设计的合理性和适用性。首先,介绍了微服务的基本概念及其在现代软件开发中的重要性。接着,通过具体的业务场景,详细分析了Python在微服务架构设计中的优势和挑战。文章还讨论了在实际应用中可能遇到的问题,并提出了相应的解决方案。希望本文能够为从事Python微服务开发的技术人员提供有价值的参考和指导。 ... [详细]
  • 揭秘腾讯云CynosDB计算层设计优化背后的不为人知的故事与技术细节
    揭秘腾讯云CynosDB计算层设计优化背后的不为人知的故事与技术细节 ... [详细]
  • 无论是在迁移到云服务还是更换云服务商的过程中,数据迁移都是一个至关重要的环节。本文将探讨数据迁移中可能遇到的问题及解决方案,包括路径问题、速度问题和数据完整性等。 ... [详细]
  • 微服务优雅上下线的最佳实践
    本文介绍了微服务上下线的正确姿势,避免使用 kill -9 等粗暴手段,确保服务的稳定性和可靠性。 ... [详细]
  • 2020年9月15日,Oracle正式发布了最新的JDK 15版本。本次更新带来了许多新特性,包括隐藏类、EdDSA签名算法、模式匹配、记录类、封闭类和文本块等。 ... [详细]
  • Flutter 2.* 路由管理详解
    本文详细介绍了 Flutter 2.* 中的路由管理机制,包括路由的基本概念、MaterialPageRoute 的使用、Navigator 的操作方法、路由传值、命名路由及其注册、路由钩子等。 ... [详细]
  • 从0到1搭建大数据平台
    从0到1搭建大数据平台 ... [详细]
  • 解决Bootstrap DataTable Ajax请求重复问题
    在最近的一个项目中,我们使用了JQuery DataTable进行数据展示,虽然使用起来非常方便,但在测试过程中发现了一个问题:当查询条件改变时,有时查询结果的数据不正确。通过FireBug调试发现,点击搜索按钮时,会发送两次Ajax请求,一次是原条件的请求,一次是新条件的请求。 ... [详细]
  • 本文深入解析了 Kubernetes 控制平面(特别是 API 服务器)与集群节点之间的通信机制,并对其通信路径进行了详细分类。旨在帮助用户更好地理解和定制其安装配置,从而增强网络安全性,确保集群的稳定运行。 ... [详细]
  • AntV/G2Plot v2.0 技术架构思考
    antv,g2plot,v2, ... [详细]
author-avatar
掩不住的心
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有