一、简介

1.1 概述

Harbor的目标是帮助用户迅速搭建一个企业级的 Docker Registry项目

以docker中的 registry 为基础,提供图形管理UI、基于角色的访问控制、AD/LDAP集成、以及审计日志等企业用户需求的功能,同时还支持中文

1.2 特性

  • 基于角色控制:用户和仓库都是基于项目进行组织的,而用户在项日中可以拥有不同的权限
  • 基于镜像的复制策略:镜像可以在多个Harbor实例之问进行复制(同步)
  • 支持LDAP/AD: Harbor 可以集成企业内部已有的AD/LDAP (类似数据库的一张表) ,用于对已经存在的用户认证和管理
  • 镜像删除和境圾回收:镜像可以被删除,也可以回收镜像占用的空间
  • 图形化用户界面:用户可以通过浏览器来浏览,搜索镜像仓库以及对项目进行管理
  • 审计管理:所有针对镜像仓库的操作都可以被记录追溯。用于审计管理
  • 支持RESTful API: RESTful API 提供给管理员对于Harbor 更多的操控,使得与其它管理软件集成变得更容易
  • Harbor和docker registry的关系: Harbor实质 上是对docker registry做了封装,扩展了自己的业务模板

1.3 构成

在这里插入图片描述

Harbor在架构上主要有Proxy、Registry、Core services、Database (Harbor-db) 、Log collector、(Harbor-log) 、Job services六个组件

Proxy

Harbor的 Registry、UI、Token 服务等组件,都处在 nginx 反向代理后边。该代理将来自浏览器、docker clients 的请求转发到后端不同的服务上

Registry

负责储存Docker 镜像,并处理 Docker push/pull 命令。由于要对用户进行访问控制,即不同用户对Docker 镜像有不同的读写权限,Regiatry 会指向一个Token 服务,强制用户的每次 Docker pul1/push 请求都要携带一个合法的 Token,Registry 会通过公钥对 Token 进行解密验证

Core services

Harbor的核心功能,主要提供以下3个服务

  • UI ( harbor-ui ) :提供图形化界而,帮助用户管理 Registry 上的镜像 ( image ) ,并对用户进行授权
  • WebHook:为了及时获取 Registry 上 image 状态变化的情况,在 Registry 上配置 Webhook 把状态变化传递给 UI 模块
  • Token 服务:负责根据用户权限给每个,Docker push/pull 命令签发 Token。Docker 客户端向 Registry 服务发起的请求,如果不包含 Token,会被重定向到 Token 服务,获得Token 后再重新向Registry 进行请求

Database (harbor- db)

为core services提供 数据库服务,负责储存用户权限。审计日志。Docker 镜像分组信息等数据

Job services

主要用于镜像复制,本地镜像可以被同步到远程Harbor实例上

eLog collector (harbor-1og)

负责收集其他组件的日志到一个地方

二、部署服务

2.1 部署harbor服务

准备工作

环境准备

server :192.168.253.11 使用 docker、docker-compose、harbor-offline-v1.1.2

client :192.168.253.22 使用 docker

解压

  • tar zxvf harbor-offline-installer-v1.2.2.tgz -C /usr/local/

  • chmod +x docker-compose

    • 赋予执行权限
  • mv docker-compose /usr/bin/

    • 移动至环境变量下

2.2 修改配置文件

  • vim /usr/local/harbor/harbor.cfg
# 第5行修改IP为本服务器
  5 hostname = 192.168.253.11

# 默认使用初始密码,后期还要修改
 59 harbor_admin_password = Harbor12345

2.3 启动harbor

  • cd harbor/

  • ./install.sh
    在这里插入图片描述

  • docker ps -a
    在这里插入图片描述

  • docker images
    在这里插入图片描述

2.4 查看启动镜像

  • pwd
    • /usr/local/harbor
  • docker-compose ps
    • 查看整体应用的状态
      在这里插入图片描述

2.5 创建新项目

浏览器输入服务器IP后可直接访问

默认的用户名和密码就是前面配置文件设置的
在这里插入图片描述

进入界面创建新项目,点击 +项目
在这里插入图片描述
填写自定义名称,点击确定生成

在这里插入图片描述在这里插入图片描述
本地通过 127.0.0.1 来登录和推送镜像

默认在80上侦听

#登录 harbor
docker login -u admin -p Harbor12345 http://127.0.0.1

#下载镜像测试
docker pull nginx

#给镜像打标签
docker tag nginx:latest 127.0.0.1/myproject-dcc/nginx:v1

#上传镜像到harbor
docker push 127.0.0.1/myproject-dcc/nginx:v1

在这里插入图片描述

在这里插入图片描述在这里插入图片描述

进入浏览器可以查看已上传的镜像
在这里插入图片描述

2.6 在其他客户端上传镜像

以上操作都是在 Harbor 服务器本地操作。如果其他客户端上传镜像到 Harbor,就会报如下错误。出现这问题的原因 Docker Registry 交互默认使用的是 HTTPS,但是搭建私有镜像默认使用的是 HTTP 服务,所以与私有镜像交互时出现以下错误

docker login -u admin -p Harbor12345 http://192.168.253.11

在这里插入图片描述

解决方法(client操作)

  • vim /usr/lib/systemd/system/docker.service
 13 ExecStart=/usr/bin/dockerd -H fd:// --insecure-registry 192.168.253.11 --containerd=/run/cont    ainerd/containerd.sock

#第13行添加以下内容
--insecure-registry 192.168.253.11
  • systemctl daemon-reload
  • systemctl restart docker

重新登录

docker login -u admin -p Harbor12345 http://192.168.253.11

在这里插入图片描述

上传镜像

docker tag tomcat:latest 192.168.253.11/myproject-dcc/tomcat:v1
docker push 192.168.253.11/myproject-dcc/tomcat:v1

测试

在这里插入图片描述

三、维护管理harbor

3.1 创建 harbor 用户

创建用户分配权限

web界面中 点击系统管理 → 用户管理 → +用户

  • 用户名设置为“dcc-123”
  • 邮箱设置“dcc-123@dcc.com”
  • 全名123
  • 密码Aa123456
  • 注释为BOSS(自定义)

在这里插入图片描述

添加项目成员

点击项目 → myproject-dcc → 成员 → +成员
填写上述用户为开发人员

在这里插入图片描述

3.2 在client使用普通账户操作镜像

删除现有镜像

docker rmi 192.168.253.11/myproject-dcc/tomcat:v1

在这里插入图片描述

重新登录,使用上面创建的dcc-123账户

#登出
docker logout 192.168.253.11
Removing login credentials for 192.168.253.11

#登录
docker login 192.168.253.11

在这里插入图片描述

下载测试

docker pull 192.168.253.11/myproject-dcc/nginx:v1

在这里插入图片描述

3.3 查看日志(web网页)

在这里插入图片描述

3.4 修改 harbor.cfg 配置文件(server)

更改 harbor 配置文件可选参数时,需要先停止现有的 harbor 实例并更新 harbor.cfg
然后运行 prepare 脚本填充配置
最后重新启动实例

cd /usr/local/harbor/
docker-compose down -v

在这里插入图片描述

./prepare

在这里插入图片描述

docker-compose up -d

在这里插入图片描述

GitHub 加速计划 / ha / harbor
23.24 K
4.68 K
下载
Harbor 是一个开源的容器镜像仓库,用于存储和管理 Docker 镜像和其他容器镜像。 * 容器镜像仓库、存储和管理 Docker 镜像和其他容器镜像 * 有什么特点:支持多种镜像格式、易于使用、安全性和访问控制
最近提交(Master分支:2 个月前 )
9e55afbb pull image from registry.goharbor.io instead of dockerhub Update testcase to support Docker Image Can Be Pulled With Credential Change gitlab project name when user changed. Update permissions count and permission count total Change webhook_endpoint_ui Signed-off-by: stonezdj <stone.zhang@broadcom.com> Co-authored-by: Wang Yan <wangyan@vmware.com> 9 天前
3dbfd422 Signed-off-by: wang yan <wangyan@vmware.com> 10 天前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐