Habor私有仓库

news2024/11/15 15:42:26

Harbor简介
  Harbor是一个用于存储和分发Docker镜像的企业级Registry的服务器镜像仓库,通过添加一些企业必需的功能特性,例如安全、标识和管理等,扩展了开源Docker Distribution。作为一个企业级私有Registry服务器,Harbor提供了更好的性能和安全。提升用户使用Registry构建和运行环境传输镜像的效率。Harbor支持安装在多个Registry节点的镜像资源复制,镜像全部保存在私有的Registry中,确保数据和知识产权在公司内部网络中管控。另外,Harbor也提供了高级的安全特性,诸如用户管理,访问控制和活动审计等。
  
二、Harbor的特性:
基于角色的访问控制:用户与Docker镜像仓库通过"项目"进行组织和管理,一个用户可以对多
          个镜像仓库在同一个命名空间(project)里有不同的权限。
镜像复制:镜像可以在多个Registry实例中复制(同步)。尤其适合于负载均衡,高可用,混合云
     和多云场景。
图形化用户场景:用户可以通过浏览器来浏览,检索当前Docker镜像仓库,管理项目和命名空间。
AD/LDAP支持:Harbor可以集成企业内部已有的AD/LDAP,用于鉴权认证管理。
审计管理:所有针对镜像仓库的操作都可以被记录追溯,用于审计管理。
国际化:已拥有英文、中文、德文、日文好俄文的本地化版本。更多的语言将被添加进来。
RESTful API:RESTful API提供给管理员对于Harbor更多的操控,使得与其它管理软件集成变得
       更容易。
部署简单:提供在线和离线两种工具,也可以安装到vSphere平台(OVA方式)虚拟设备。

三、Harbor的组件
Harbor在架构上主要由6个组件构成:
Proxy:Harbor的代理程序,Harbor的registry、UI、token等服务,通过一个前置的反向代理统一
    接收浏览器、Docker客户端的请求,并将请求转发给后端不同的服务处理。
Registry:负责存储Docker的镜像,并处理docker的pull/push命令。由于我们要对用户进行访问
     控制,即不同用户对Docker image有不同的读写权限,Registry会指向一个token服务器
     ,强制用户的每次docker pull/push请求都要携带一个合法的token,Registry会通过公钥
     对token进行解密验证。
Core services:这是Harbor的核心功能,主要提供以下服务:
UI:提供图形化界面,帮助用户管理registry上的镜像(image),并对用户进行授权。
webhook:为了及时获取registry上的image状态变化的情况,在Registry上配置webhook,把状态变
     化传递给UI模块。
token服务:负责根据用户权限给每个docker push/pull命令签发token,Docker客户端向Registry服
     务发起的请求,如果不包含token,会被重定向到这里,获得token后再重新向Registry进
     行请求。
Database:为core services提供数据库服务器,负责存储用户权限、审计、Docker image分组信
     息等数据。
Job Services:提供镜像远程复制功能,可以把本地镜像同步到其他Harbor实例中。
Log collector:为了帮助监控Harbor运行,负责收集其他组件的log,供日后进行分析。

各组件之间的关系如图所示:

在这里插入图片描述

环境名称版本
系统版本CentOS Linux release 7.5.1804
docker-ce19.03.1
Harbor版本harbor-offline-installer-v1.5.0.tgz
docker-compose版本1.24.1

实验:

docker-compose的安装

#配置阿里的base源和epel源
[root@docker ~]# cat /etc/yum.repos.d/CentOS-Base.repo | grep -v "^#" 
[base]
name=CentOS-$releasever - Base - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/7/os/$basearch/
gpgcheck=0

[root@docker ~]# cat /etc/yum.repos.d/epel.repo 
[epel]
name=Extra Packages for Enterprise Linux 7 - $basearch
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch
enabled=1
gpgcheck=0

#安装Python-pip
 yum install python2-pip -y
............................................
#升级Python-pip
 pip install --upgrade pip

#安装docker-compose
 pip install docker-compose
.................................
ERROR: Cannot uninstall 'requests'. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.
如果报一上的错误我们需要执行以下命令"pip install docker-compose --ignore-installed requests"
#查看docker-compose版本
 docker-compose -v
docker-compose version 1.24.1, build 4667896
 

安装harbor

#下载1.5.0离线安装包
wget https://storage.googleapis.com/harbor-releases/harbor-offline-installer-v1.5.0.tgz

#解压并修改配置文件、安装
 cd /application/
 ls
harbor-offline-installer-v1.5.0.tgz 
tar xf harbor-offline-installer-v1.5.0.tgz 
cat harbor.cfg |grep -v ^$|grep -v ^#

_version = 1.5.0

hostname = docker #需要写IP地址或者域名

ui_url_protocol = http

max_job_workers = 50

customize_crt = on

ssl_cert = /data/cert/server.crt #没有目录需要创建

ssl_cert_key = /data/cert/server.key #没有目录需要创建

secretkey_path = /data

admiral_url = NA

log_rotate_count = 50

log_rotate_size = 200M

http_proxy =

https_proxy =

no_proxy = 127.0.0.1,localhost,ui

email_identity =

email_server = smtp.mydomain.com

email_server_port = 25

email_username = sample_admin@mydomain.com

email_password = abc

email_from = admin <sample_admin@mydomain.com>

email_ssl = false

email_insecure = false

harbor_admin_password = 12345 #harbor登录密码

auth_mode = db_auth

ldap_url = ldaps://ldap.mydomain.com

ldap_basedn = ou=people,dc=mydomain,dc=com

ldap_uid = uid

ldap_scope = 2

ldap_timeout = 5

ldap_verify_cert = true

ldap_group_basedn = ou=group,dc=mydomain,dc=com

ldap_group_filter = objectclass=group

ldap_group_gid = cn

ldap_group_scope = 2

self_registration = on

token_expiration = 30

project_creation_restriction = everyone

db_host = mysql

db_password = root123

db_port = 3306

db_user = root

clair_db_host = postgres

clair_db_password = password

clair_db_port = 5432

clair_db_username = postgres

clair_db = postgres

uaa_endpoint = uaa.mydomain.org

uaa_clientid = id

uaa_clientsecret = secret

uaa_verify_cert = true

uaa_ca_cert = /path/to/ca.pem

registry_storage_provider_name = filesystem

registry_storage_provider_config =
#安装并启动
#安装之前需要启动docker,如果docker服务重启了harbor程序也必须要重新启动
[root@docker harbor]# ./install.sh
.............................................

 

 

使用Harbor上传下载镜像
连接登录harbor 

# docker login 192.168.126.155
输入用户名admin/Harbor12345
Login Succeeded #显示此字段说明登录成功可以上传下载镜像

#连接报错解决
Error response from daemon: Get https://docker/v2/: dial tcp 192.168.100.100:443: connect: connection refused

#报错分析
Docker自从1.3.X之后docker registry交互默认使用的是HTTPS,但是我们搭建私有镜像默认使用的是HTTP服务,所以与私有镜像交时出现以上错误。

#解决办法:
#修改docker的主配置文件
[root@docker harbor]# vim /etc/docker/daemon.json 
{
        "registry-mirrors":["https://registry.docker-cn.com"],
        "insecure-registries":["192.168.100.100"]    #添加信任的IP地址信息
}

#重启docker服务和harbor应用程序
systemctl daemon-reload 
systemctl restart docker
docker-compose down
 docker-compose up


#再次尝试登录
docker login 192.168.100.100
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

访问harbor的web界面

在这里插入图片描述

使用Harbor上传下载镜像
连接登录harbor

# docker login 192.168.100.100
输入用户名admin/Harbor12345
Login Succeeded #显示此字段说明登录成功可以上传下载镜像

#连接报错解决
Error response from daemon: Get https://docker/v2/: dial tcp 192.168.13.129:443: connect: connection refused

#报错分析
Docker自从1.3.X之后docker registry交互默认使用的是HTTPS,但是我们搭建私有镜像默认使用的是HTTP服务,所以与私有镜像交时出现以上错误。

#解决办法:
#修改docker的主配置文件
vim /etc/docker/daemon.json 
{
        "registry-mirrors":["https://registry.docker-cn.com"],
        "insecure-registries":["192.168.100.100"]    #添加信任的IP地址信息
}

#重启docker服务和harbor应用程序
systemctl daemon-reload 
systemctl restart docker
docker-compose down
docker-compose up


#再次尝试登录
docker login 192.168.100.100
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
 

上传镜像
在Harbor上新创建一个项目供上传使用

在这里插入图片描述

给本地镜像打标签

docker tag  httpd:latest  192.168.100.100/test/httpd:v0.1
docker image ls 192.168.100.100/test/httpd
REPOSITORY                   TAG                 IMAGE ID            CREATED             SIZE
192.168.100.100/test/httpd   v0.1                7d85cc3b2d80        10 days ago         154MB
推送镜像到远程仓库harbor上

docker   push   192.168.100.100/test/httpd:v0.1 
The push refers to repository [192.168.100.100/test/httpd]
9e0ab3afff15: Pushed 
7a0960d9b679: Pushed 
8b16516271d6: Pushed 
5bcb93651a74: Pushed 
1c95c77433e8: Pushed 
v0.1: digest: sha256:90cca2f9c32ad25afa180da6b14f35de9990cb02b9007350a5bccef4cac1e1c9 size: 1367
拉取镜像

[root@docker ~]# docker image rm  192.168.100.100/test/httpd:v0.1 
Untagged: 192.168.100.100/test/httpd:v0.1
Untagged: 192.168.100.100/test/httpd@sha256:90cca2f9c32ad25afa180da6b14f35de9990cb02b9007350a5bccef4cac1e1c9
docker  pull   192.168.100.100/test/httpd:v0.1 
v0.1: Pulling from test/httpd
Digest: sha256:90cca2f9c32ad25afa180da6b14f35de9990cb02b9007350a5bccef4cac1e1c9
Status: Downloaded newer image for 192.168.100.100/test/httpd:v0.1
192.168.100.100/test/httpd:v0.1
[root@docker ~]# docker image ls 192.168.100.100/test/httpd:v0.1 
REPOSITORY                   TAG                 IMAGE ID            CREATED             SIZE
192.168.100.100/test/httpd   v0.1                7d85cc3b2d80        10 days ago         154MB
 

————————————————

本文为CSDN博主「Micky_Yang」的原创文章
原文链接:https://blog.csdn.net/Micky_Yang/article/details/100183531

 

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

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

相关文章

Python基础知识进阶之正则表达式

一.match re.match 是从字符串的起始位置匹配一个模式&#xff0c; 匹配成功 re.match 方法返回一个匹配的对象&#xff0c;否则返回 None。 re.match(pattern, string, flags0) pattern&#xff1a; 匹配的正则表达式。 string&#xff1a; 要匹配的字符串。 flags&…

LeetCode刷题复盘笔记—一文搞懂完全背包之322. 零钱兑换问题(动态规划系列第十四篇)

今日主要总结一下动态规划完全背包的一道题目&#xff0c;322. 零钱兑换 题目&#xff1a;322. 零钱兑换 Leetcode题目地址 题目描述&#xff1a; 给你一个整数数组 coins &#xff0c;表示不同面额的硬币&#xff1b;以及一个整数 amount &#xff0c;表示总金额。 计算并返…

MATLAB绘制伪彩图和切片轮廓线图

n6%定义轮数 r(0:n)/n;%定义轮的半径 thetapi*(-n:n)/n;%定义轮的扇区角 Xr*cos(theta); Yr*sin(theta);%定义网格顶点 Cr*cos(2*theta);%定义色图 pcolor(X,Y,C)%绘制伪彩图axis equal tight[x y z v]flow;%打开水流数据 hcontourslice(x,y,z,v,[1:9],[],[0],linspace(-8,2,10…

【面试题】http协议

1. http状态码 1xx&#xff1a;服务器收到请求&#xff0c;但是没有返回结果。2xx&#xff1a;请求成功。200成功。3xx&#xff1a;重定向。301永久重定向&#xff0c;302临时重定向&#xff0c;304资源未被修改。4xx&#xff1a;客户端错误。404资源未找到&#xff0c;403没有…

[附源码]计算机毕业设计基于Springboot药品仓库及预警管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

引擎入门 | Unity UI简介–第2部分(4)

本期我们继续为大家进行Unity UI简介&#xff08;第二部分&#xff09;的后续教程 本篇内容 6.添加设置对话框 7.设置对话框的背景图像 8.添加标签 文章末尾可免费获取教程源代码 本篇本篇Unity UI简介&#xff08;第二部分&#xff09;篇幅较长&#xff0c;分为八篇&…

Xylan-Alkyne木聚糖-炔基|炔基-PEG-木聚糖

Xylan-Alkyne木聚糖-炔基|炔基-PEG-木聚糖 中文名称&#xff1a;木聚糖-炔基 英文名称&#xff1a;Xylan-Alkyne 别称&#xff1a;炔基修饰木聚糖&#xff0c;炔基-木聚糖 还可以提供PEG接枝修饰木聚糖&#xff0c;Xylan-PEG-Alkyne 木聚糖-聚乙二醇-炔基&#xff0c;炔基-…

​创业15年,50岁回到农村过上退休的生活,上班和创业是两难的选择。

我是老马&#xff0c;现在在农村老家生活1个月。 15年前&#xff0c;大学毕业三年后&#xff0c;在县城里搞到一份稳定的工作&#xff0c;朝九晚五&#xff0c;不慌不忙&#xff0c;结婚生子&#xff0c;后来又这样安安稳稳的过了10年&#xff0c;攒了一些钱&#xff0c;但生活…

【HTML学生作业网页】基于HTML+CSS+JavaScript仿南京师范大学泰州学院(11页)

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

llvm-ir之核心类设计

llvm-ir之核心类设计引言1 逻辑关系2 class Module3 class IRBuilder4 class Instruction5 class Constant引言 llvm IR是llvm对代码的一种中间表示。它来源AST(抽象语法树)&#xff0c;是llvm代码优化的主要对象。 1 逻辑关系 IR的很多组成元素都是以Value为基类。llvm并没有…

【web3空投】SINSO 主网公测空投

Web3.0 基础设施简化去中心化的热数据缓存和数据治理 文章目录1. SINSO Token介绍2. SINSO 主网公测空投2.1 时间2.2 奖励2.3 参与方式2.3.1 第一步(必须完成)2.3.2 第二步(成为矿工)2.3.3 第三步(成为节点担保人)2.3.4 第四步&#xff1a;公开测试反馈表3. 注意事项4. 成为矿工…

这几个方法让你实现EXCEL文件翻译成中文

在日常的工作中&#xff0c;如果遇到需要将EXCEL翻译成其它语言的的时候&#xff0c;我们该怎么办呢&#xff1f;一行一行的复制查找&#xff0c;然后再粘贴回表格中吗&#xff1f;这样操作的话&#xff0c;不仅浪费时间和精力&#xff0c;而且效率还非常的低。那有什么方法可以…

Java项目:SSM图书馆图书管理系统

作者主页&#xff1a;源码空间站2022 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 项目介绍 读者角色包含以下功能&#xff1a; 读者登录,图书查询,借阅图书,借阅管理,修改密码,借阅记录等功能。 管理员角色包含以下功能&#xff1a; 管理…

Android 系统启动到App 界面完整详解~

通过本篇文章&#xff0c;你将了解到&#xff1a; Android 系统启动流程概览ServiceManager 进程作用Zygote 进程创建与fork子进程system_server 进程作用App 与 system_server 交互Activity 与 View的展示全流程图 1. Android 系统启动流程概览 init 是用户空间的第一个进程&a…

ARM基础(1):Cortex-M3寄存器

Cortex-M3处理器的寄存器包括R0~R15和一些特殊的寄存器。其中R0到R12是通用寄存器&#xff0c;但是一些16位的Thumb指令只能访问R0到R7(低寄存器)&#xff0c;而32位的Thumb-2指令则可以访问所有这些寄存器。特殊寄存器只能通过特殊访问指令访问。 所有的寄存器如下图所示&…

Java安全--篇四-Java原生反序列化

Java原生序列化和反序列化 看理论&#xff1a; 序列化和反序列化的详解_tree_ifconfig的博客-CSDN博客_序列化和反序列化 java序列化与反序列化全讲解_mocas_wang的博客-CSDN博客_java反序列化 java 序列化和反序列化 - xbwang520 - 博客园 序列化和反序列化的简单图解&am…

[附源码]Python计算机毕业设计Django微录播室预约管理系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

【计算机网络】超详细——VLAN、Trunk的配置

1、VLAN 1.1 什么是VLAN&#xff1f; VLAN&#xff1a;即Virtual Local Area Network&#xff08;虚拟局域网&#xff09;&#xff0c;是物理设备上连接的不受物理位置限制的用户的一个逻辑组&#xff0c;将一个物理LAN划分成多个广播域的通信技术&#xff1b;每一个VLAN是一…

想要高效运行SolidWorks,云上设计了解一下

SolidWorks是达索系统&#xff08;Dassault Systemes S.A.&#xff09;旗下SolidWorks公司开发的&#xff0c;运行在微软Windows平台下的第一个三维机械设计软件&#xff0c;涵盖非常广泛的横截面制造业细分市场&#xff0c;目前广泛应用在航天、建筑、汽车生产企业、模具生产企…

[附源码]Python计算机毕业设计Django农产品销售网站

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;我…