Harbor仓库

一、什么是Harbor

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

二、Harbor有那些功能

  • Harbor实例之间进行复制(同步)
  • LDAP/AD:Harbor可以集成企业内以有的AD/LDAP(类似一种映射表而AD域则是LDAP的实现),对已经存在的用户认证和管理
  • web UI界面,友好显示
  • Restful API:Harbor能够提供Restful API,便于与第三方管理进行交互集成
  1. 和docker registry的关系:的本质是对docekr的镜像进行封装,并在其基础上增加了其他的功能

三、Harbor的结构

 

Harbor架构有六大核心组件:Proxy ,Registry,Core services,Databases,Job services,Log collector(Harbor-log)

    1. :是一个nginx的前端代理,Harboe的镜像仓库和Core services都在后面。将docker cilent向浏览器的请求转发到后端不同服务上。
    2. :负责存储Docker镜像,并处理Docker的push和pull命令,但是因为本身不具备对权限的访问控制,所以需要Core service的Token服务给每次的pull和push请求打上Token,会通过公钥对Token进行解密验证。
    1. services:作为Harbor的核心功能,提供以下几个服务:
      1. :提供图像化界面,帮助用户管理Registry上的镜像,并对用户进行授权
      1. :负责根据用户权限给每个Docker push/pull命令签发.Docker客户端向Registry服务发起的请求,如果不包含Docker ,会被重定向到服务,获得Token后再重新向Registry进行请求。
      2. :为了及时获取Registry上image状态变化的情况,在Registry上配置WebHook,把状态变化传递给UI模块
    1. :为core services提供数据库服务,负责存储用户权限、审计日志、Docker镜像分组信息等数据。Docker数据存储在文件系统,但是分组信息存储在数据库。
    2. services:主要用于镜像复制,本地镜像可以被同步到远程Harbor实例上。
    1. 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

①试验环境

主机

IP

环境  

Server

192.168.226.121

docker docker-compose harbor harbor-offline-v1.1.2

Client

192.168.226.122

docker

②部署Harbor(192.168.226.121)

安装harbor到/usr/local/

 

修改配置文件harbor.cfg

 vim /usr/local/harbor/harbor.cfg

 第五行

 hostname = 192.168.226.121

 

执行Harbor安装sh /usr/local/harbor/install.sh

 

查看下进行环境 docker ps

 

登录Harbor仓库(默认账号:admin   默认密码:Harbor12345)

 

创建一个项目

 

 

 

③本地登录并进行测试上传和下载

#登录

docker login -u admin -p Harbor12345 https://127.0.0.1

#上传镜像

    #先将镜像打上标签

    docker tag nginx 127.0.0.1/mogu/nginx:ssssl

docker push nginx 127.0.0.1/mogu/nginx:ssssl    

#下载镜像

docker pull nginx

 

 

 

 

④其他客户端对其访问

由于Docker Registry 交互默认使用的是 HTTPS,但是搭建私有镜像默认使用的是 HTTP 服务,所以与私有镜像交互时出现以下错误。

 

解决方案:在dockerserver文件中手动添加仓库服务器地址

vim /usr/lib/systemd/system/docker.service

添加  --insecure-registry 192.168.226.121

systemctl daemon-reload

systemctl restart docker

 

再次登录 docker login -u admin -p Harbor12345 http://192.168.226.121(当然如果你还是无法登录,建议去看下server有没有挂掉)

 

五、管理维护Harbor

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

#关闭所有模块

docker-compose down -v

 

#填充配置

./prepare

 

#再次启动Harbor

docker-compose up -d

 

①创建Harbor用户

 

 

 

 

②对Client端进行操作

 #登出

 docker logout 192.168.226.121

 #登入

 docker login 192.168.226.121

 #下载仓库镜像

 docker pull 192.168.226.121/mogu/nginx:ssssl

 

六、移除 Harbor 服务容器同时保留镜像数据/数据库

 

在server上进行操作

docker-compose down -v

#如果需要重新部署,需要移除Harbor服务容器全部数据

#持久数据,如镜像,数据库等在宿主机的/data目录下,日志在宿主机的/var/log/Harbor目录下

rm -rf /data/database

rm -rf /data/registry

五、远程同步

①安装第二台Harbor(192.168.226.122)

具体安装步骤重复上述

 

 

②配置同步(192.168.226.121)

 

 

 

我们刷新下被同步的仓库

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值