Harbor-私有镜像仓库

目录

一、Harbor 原理说明

1.软件资源介绍

2.Harbor 特性

3.Harbor 认证过程

4.Harbor 认证流程

二、私有镜像仓库实验

1.环境准备

2.安装docker

3.配置镜像加速和私有仓库地址

4.搭建harbor仓库

5.本地windows浏览器访问配置


一、Harbor 原理说明

1.软件资源介绍

  • Harbor是VMware公司开源的企业级DockerRegistry项目,项目地址为https://github.com/vmware/harbor。其目标是帮助用户迅速搭建一个企业级的Dockerregistry服务。
  • 它以Docker公司开源的registry为基础,提供了管理UI,基于角色的访问控制(Role Based Access Control), AD/LDAP集成、以及审计日志(Auditlogging) 等企业用户需求的功能,同时还原生支持中文。
  • Harbor的每个组件都是以Docker容器的形式构建的,使用Docker Compose来对它进行部署。用于部署Harbor的Docker Compose模板位于  /Deployer/docker-compose.yml,由5个容器组成,这几个容器通过Docker link的形式连接在一起,在容器之间通过容器名字互相访问。对终端用户而言,只需要暴露 proxy ( 即Nginx)的服务端口。

         Proxy:由Nginx 服务器构成的反向代理。

         Registry:由Docker官方的开源 registry 镜像构成的容器实例。

         UI:即架构中的 core services, 构成此容器的代码是 Harbor 项目的主体。

         MySQL:由官方 MySQL 镜像构成的数据库容器。

         Log:运行着 rsyslogd 的容器,通过 log-driver 的形式收集其他容器的日志

2.Harbor 特性

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

         b、基于镜像的复制策略:镜像可以在多个Harbor实例之间进行复制

         c、支持LDAP: Harbor的用户授权可以使用已经存在LDAP用户

         d、镜像删除 & 垃圾回收: Image可以被删除并且回收Image占用的空间,绝大部分的用户操作API, 方便用户对系统进行扩展

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

         f、轻松的部署功能: Harbor提供了online、offline安装,除此之外还提供了virtualappliance安装。

         g、Harbor 和 docker registry 关系: Harbor实质上是对 docker registry 做了封装,扩展了自己的业务模块。

3.Harbor 认证过程

         a、dockerdaemon从docker registry拉取镜像。

         b、如果dockerregistry需要进行授权时, registry将会返回401 Unauthorized响应,同时在响应中包含了docker client如何进行认证的信息。

         c、dockerclient根据registry返回的信息,向auth server发送请求获取认证token。

         d、auth server则根据自己的业务实现去验证提交的用户信息是否存符合业务要求。e、用户数据仓库返回用户的相关信息。

         f、auth server将会根据查询的用户信息,生成token令牌,以及当前用户所具有的相关权限信息.上述就是完整的授权过程.当用户完成上述过程以后便可以执行相关的pull/push操作。认证信息会每次都带在请求头中。

4.Harbor 认证流程

         a、首先,请求被代理容器监听拦截,并跳转到指定的认证服务器。

         b、 如果认证服务器配置了权限认证,则会返回401。通知dockerclient在特定的请求中需要带上一个合法的token。而认证的逻辑地址则指向架构图中的core services。

         c、 当docker client接受到错误code。client就会发送认证请求(带有用户名和密码)到coreservices进行basic auth认证。

         d、 当C的请求发送给ngnix以后, ngnix会根据配置的认证地址将带有用户名和密码的请求发送到core serivces。

         e、 coreservices获取用户名和密码以后对用户信息进行认证(自己的数据库或者介入LDAP都可以)。成功以后,返回认证成功的信息

二、私有镜像仓库实验

1.环境准备

两台虚拟机:一台服务器(192.168.159.82),一台客户端(192.168.159.83)。

  • docker地址:
https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-17.03.0.ce-1.el7.centos.x86_64.rpmdocker-ce-selinux-17.03.0.ce-1.el7.centos.noarch.rpm
  • docker-compose地址:
curl -L https://github.com/docker/compose/releases/download/1.9.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
  • Harbor 地址:
https://github.com/vmware/harbor/releases/download/v1.2.0/harbor-offline-installer-v1.2.0.tgz

2.安装docker

服务端和客户端同时执行

# 上传docker安装包并解压
# 安装上传的dockerrpm包yum -y install docker*systemctl enable docker# 重启服务器,使docker可以接管防火墙规则。reboot

3.配置镜像加速和私有仓库地址

客户端执行

mkdir /etc/dockervim /etc/docker/daemon.json{"registry-mirrors": ["https://si4p9a1f.mirror.aliyuncs.com"]"insecure-registries": ["harbor.daboluo.com"]
}systemctl daemon-reload && systemctl restart docker# 将 harbor.daboluo.com 域名指向服务端地址
vim /etc/hosts
192.168.159.82    harbor.daboluo.com

4.搭建harbor仓库

服务器执行:

# 上传 harbor-offline-installer-v1.2.0 的rpm包# 下载docker-compose
curl -L https://github.com/docker/compose/releases/download/1.9.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-composechmod a+x /usr/local/bin/docker-compose# 查看版本信息
docker-compose version# 解压harbor压缩包
tar -zxvf harbor-offline-installer-v1.2.0mv harbor /usr/local/ && cd /usr/local/harbor/vim harbor.cfg
hostname = harbor.daboluo.com
ui_url_protocol = https# 创建加密证书
mkdir -p /data/cert# 创建私钥文件,填写密码
openssl genrsa -des3 -out server.key 2048#申请证书
openssl req -new -key server.key -out server.csr#将私钥密码备份给org
cp server.key server.key.org#将私钥密码去除
openssl rsa -in server.key.org -out server.key#根据私钥文件签发证书
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt#查看私钥和证书的位置是否正确
cd /usr/local/harbor && cat harbor.cfs# 进行安装
./install.sh# 查看所有容器
docker ps -a# 启动所有容器
docker-compose -f /usr/local/harbor/docker-compose.yml startdocker restart docker

5.本地windows浏览器访问配置

# 配置windows的hosts文件,将域名解析到harbor服务器
C:\Windows\System32\drivers\etc\hosts
192.168.159.82    harbor.daboluo.com浏览器访问harbor.xinxianghf.com
输入用户名和密码
admin
Harbor12345

新建项目(镜像仓库名称)

# 创建普通用户推送、下载镜像客户端执行:# 登录仓库
docker login harbor.daboluo.com -udaboluo# 修改镜像的标签名
docker tag SOURCE_IMAGE[:TAG] harbor.daboluo.com/nginx/IMAGE[:TAG]# 推送镜像
docker push harbor.daboluo.com/nginx/IMAGE[:TAG]# 下载镜像
docker pull harbor.daboluo.com/nginx/nginx:latest

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

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

相关文章

突破编程_C++_设计模式(访问者模式)

1 访问者模式的基本概念 C中的访问者模式是一种行为设计模式,它允许你在不修改类层次结构的情况下增加新的操作。这种模式将数据结构与数据操作解耦,使得操作可以独立于对象的类来定义。 访问者模式的主要组成部分包括: (1&…

面试算法-62-盛最多水的容器

题目 给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 说明:你不能倾斜容器。…

CycleGAN训练及测试过程细节记录

CycleGAN训练及测试过程细节记录 文章目录 关于训练关于测试 关于训练 1、训练前将数据配置好,并在Pycharm中写好配置信息 2、关于训练过程的参数配置在 options/train_options.py options/base_options.py batch_size:批大小 crop_size:…

python实现--拓扑排序

拓扑排序是对有向无环图(DAG)进行排序的一种算法,它可以将图中的顶点排成一个线性序列,使得图中的任意一条有向边都从序列中的较早顶点指向较晚顶点。换句话说,如果图中存在一条从顶点A到顶点B的有向边,那么…

Android分区存储到底该怎么做

文章目录 一、Android存储结构二、什么是分区存储?三、私有目录和公有目录三、存储权限和分区存储有什么关系?四、我们应该该怎么做适配?4.1、利用File进行操作4.2、使用MediaStore操作数据库 一、Android存储结构 Android存储分为内部存储和…

【逆向】使用 Frida 进行 Android 应用程序动态分析与加密算法逆向

不愿染是与非 怎料事与愿违 心中的花枯萎 时光它去不回 回忆辗转来回 痛不过这心扉 愿只愿余生无悔 随花香远飞 🎵 毛不易《不染》 在移动应用程序开发中,保护用户数据的安全至关重要。加密算法是保护数据安全的重要手段之一。然而…

【晴问算法】提高篇—动态规划专题—最长上升子序列

题目描述 现有一个整数序列a1,a2,...,an​​​​​​,求最长的子序列(可以不连续),使得这个子序列中的元素是非递减的。输出该最大长度。 输入描述 第一行一个正整数n(1≤n≤100​​​​),表示序…

【进阶版讲解深度学习如何入门?】

深度学习如何入门? 1. 前言2. 学习基础知识3. 了解机器学习4. 编程和工具5. 深度学习基础6. 实战项目7. 高级概念8. 持续学习9. 推荐资源 1. 前言 深度学习是机器学习的一个子领域,它受到了生物神经网络的启发,依赖于构建多层的神经网络来学…

Windows 11 安装 Scoop

[Windows 11 安装 Scoop](Windows 11 安装 Scoop) 0. 引言 Scoop 从命令行安装您熟悉和喜爱的程序,差异最小。 它的主要功能如下: 消除权限弹出窗口 隐藏 GUI 向导样式的安装程序 防止PATH污染安装大量程序 避免安装和卸载程序的意外副作用 自动查…

算法-背包问题

问题描述 假设我有一个背包,希望在装得下的情况下,尽量装进价值更多的物品。那么我该怎么做呢? 问题抽象 假设背包的容量是m,就假设是4吧 # 表示背包容量4KG m 4 可选装进背包的物品有n个,物品的价值存储在prices…

支付宝手机网站支付,微信扫描二维码支付

支付宝手机网站支付 支付宝文档 响应示例 <form name"punchout_form" method"post" action"https://openapi.alipay.com/gateway.do?charsetUTF-8&methodalipay.trade.wap.pay&formatjson&signERITJKEIJKJHKKKKKKKHJEREEEEEEEEEEE…

Maven打包时报错:Cannot allocate memory

使用Jenkins执行Maven打包任务时报错 Cannot allocate memory解决办法&#xff1a; 配置系统变量 MAVEN_OPTS-Xmx256m -XX:MaxPermSize512m或者 在项目目录下新建文件 .mvn/jvm.config -Xmx256m -Xms256m -XX:MaxPermSize512m -Djava.awt.headlesstrue参考 Jenkins Maven …

MySQL 数据库设计范式

第一范式&#xff08;1NF&#xff09; 每一列都是不可分割的原子数据项第二范式&#xff08;2NF&#xff09; 在1NF的基础上&#xff0c;非码属性必须完全依赖于候选码(在1NF基础上消除非主属性对主码的部分函数依赖) 1.函数依赖A->B&#xff0c;如果通过A属性(属性组)的值…

Transformer学习【从零理解】

Transformer 一、整体框架 二、Encoder 1.输入部分: &#xff08;1&#xff09;Embedding&#xff1a;将输入的词转换为对应的词向量。 &#xff08;2&#xff09;位置编码&#xff1a;因为保证输出时&#xff0c;顺序不会打乱&#xff0c;所以要加入时序信息即位置编码。 公…

如何避免AI网红经济泡沫?警惕细分行业的AI转型而不是转行

一、AI泡沫预防针 要避免AI相关新概念催生的网红经济泡沫&#xff0c;可以从多个角度采取措施&#xff1a; 1. **理性投资**&#xff1a; - 投资者应对AI项目和网红经济中的企业进行深入研究&#xff0c;了解其真实的技术实力、商业模式的可行性和盈利能力&#xff0c;而非…

代码随想录Day52:最长递增子序列、最长连续递增序列、最长重复子数组

最长递增子序列 class Solution { public:int lengthOfLIS(vector<int>& nums) {if(nums.size() < 1) return nums.size();vector<int> dp(nums.size(), 1);int res 0;for(int i 1; i < nums.size(); i){for(int j 0; j < i; j){if(nums[i] > …

初识GO语言

是由google公司推出的一门编程语言&#xff0c;12年推出的第一个版本 Go的特点 Go为什么能在最近的IT领域炙手可热 集python简洁&C语言的性能于一身 21世纪的C语言 顺应容器化时代的到来 区块链的崛起 学习一门编程语言可以划分为下面这三个步骤 安装 编译器 or 解…

JAVA多线程之synchronized锁

文章目录 1. 临界区2. synchronized使用2.1 不加锁实现2.2 synchronized加锁2.3 面向对象的改进2.4 方法上加synchronized2.5 线程安全 3. Monitor3.1 Java对象头3.2 Monitor工作流程3.3 字节码角度 4. synchronized原理4.1 轻量级锁4.2 锁膨胀4.3 偏向锁4.3.1 偏向锁过程4.3.2…

【链表】Leetcode 2. 两数相加【中等】

两数相加 给你两个 非空 的链表&#xff0c;表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的&#xff0c; 并且每个节点只能存储 一位 数字。请你将两个数相加&#xff0c;并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外&#xff0c;这两个数都不…

Redis数据结构对象中的对象共享、对象的空转时长

对象共享 概述 除了用于实现引用计数内存回收机制之外&#xff0c;对象的引用计数属性还带有对象共享的作用。 在Redis中&#xff0c;让多个键共享同一个值对象需要执行以下两个步骤: 1.将数据库键的值指针指向一个现有的值对象2.将被共享的值对象的引用计数增一 目前来说…