一、Harbor 介绍

在这里插入图片描述
1、什么是Harbor
Harbor 是 VMware 公司开源的企业级 Docker Registry 项目,其目标是帮助用户迅速搭建一个企业级的 Docker Registry 服务。
Harbor以 Docker 公司开源的 Registry 为基础,提供了图形管理 UI 、基于角色的访问控制(Role Based AccessControl) 、AD/LDAP 集成、以及审计日志(Auditlogging) 等企业用户需求的功能,同时还原生支持中文。
Harbor 的每个组件都是以 Docker 容器的形式构建的,使用 docker-compose 来对它进行部署。用于部署 Harbor 的 docker-compose 模板位于 harbor/docker-compose.yml。

2、Harbor的特性

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

3、Haebor的构成

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

Proxy: 是一个 nginx 的前端代理,Harbor 的 Registry、UI、Token 服务等组件,都处在 nginx 反向代理后边。 该代理将来自浏览器、docker clients 的请求转发到后端不同的服务上。
Registry: 负责储存 Docker 镜像,并处理 Docker push/pull 命令。由于要对用户进行访问控制,即不同用户对 Docker 镜像 有不同的读写权限,Registry 会指向一个 Token 服务,强制用户的每次 Docker pull/push 请求都要携带一个合法的 Token, Registry 会通过公钥对 Token 进行解密验证。
Core services: Harbor的核心功能,主要提供以下3个服务:

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

Database(harbor-db):为core services提供数据库服务,负责储存用户权限、审计日志、Docker 镜像分组信息等数据。
Job services: 主要用于镜像复制,本地镜像可以被同步到远程 Harbor 实例上。
Log 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 是一个开源的企业级 Docker Registry 服务,它提供了一个安全、可信赖的仓库来存储和管理 Docker 镜像。以下操作必须在服务器安装 docker 和 docker-compose 的前提下

二、Harbor 的下载

2.1.通过 Linux 命令下载

 wget https://github.com/goharbor/harbor/releases/download/v2.12.3/harbor-offline-installer-v2.12.3.tgz

2.2.GitHup 下载

下载地址:https://github.com/goharbor/harbor/releases
在这里插入图片描述
在这里插入图片描述

下载成功后,把包通过 上传到 服务器。

部署harbor

[root@docker ~]# tar zxf harbor-offline-installer-v2.5.4.tgz
[root@docker ~]# ls
anaconda-ks.cfg  certs   harbor-offline-installer-v2.5.4.tgz
auth             harbor
[root@docker ~]# cd harbor/


[root@docker harbor]# cp harbor.yml.tmpl harbor.yml
[root@docker harbor]# vim harbor.yml

  hostname: reg.timinglee.org
  certificate: /data/certs/timinglee.org.crt
  private_key: /data/certs/timinglee.org.key
  harbor_admin_password: lee

[root@docker harbor]# ./install.sh --help


Please set --with-notary 				#证书签名
Please set --with-trivy  				#安全扫描
Please set --with-chartmuseum if needs enable Chartmuseum in Harbor


[root@docker harbor]# ./install.sh --with-chartmuseum
 
#管理harbor的容器
[root@docker harbor]# docker compose stop
[root@docker harbor]# docker compose  up -d

4.4.2 管理仓库

1.登陆

2.建立仓库项目

上传镜像

[root@docker harbor]# docker login reg.timinglee.org
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/#credential-stores

Login Succeeded

[root@docker harbor]# docker tag busybox:latest  reg.timinglee.org/timinglee/busybox:latest
[root@docker harbor]# docker push reg.timinglee.org/timinglee/busybox:latest
The push refers to repository [reg.timinglee.org/timinglee/busybox]
d51af96cf93e: Pushed
latest: digest: sha256:28e01ab32c9dbcbaae96cf0d5b472f22e231d9e603811857b295e61197e40a9b size: 527

查看上传的镜像

三. Docker镜像仓库总结(速记版)

1、核心仓库类型(2类,记特点+场景)

类型 核心特性 适用场景 关键记忆点
公有仓库(Docker Hub) 官方公共仓库,海量镜像,国内访问慢 测试/学习、拉取官方基础镜像 需登录、国内需配置加速
私有仓库 本地/内网部署,数据私密,访问速度快 生产环境、企业内部镜像管理 分简易版(Registry)/企业版(Harbor)

2、高频操作命令(记核心,按“登-标-推-拉-加速”)

Ⅰ . 公有仓库(Docker Hub)操作

# 1. 登录Docker Hub(需账号)
docker login
# 2. 给镜像打标签(推仓库必须,格式:用户名/镜像名:标签)
docker tag 原镜像名:标签 用户名/新镜像名:标签
# 3. 推送镜像到仓库
docker push 用户名/镜像名:标签
# 4. 从仓库拉取镜像
docker pull 用户名/镜像名:标签
# 5. 退出登录
docker logout

Ⅱ. 私有仓库操作

(1)简易版Registry(快速搭建)
# 1. 启动Registry容器(默认存储在容器内,建议挂载卷)
docker run -d -p 5000:5000 --restart=always --name registry -v registry-data:/var/lib/registry registry
# 2. 配置非加密访问(国内Docker默认拒绝http私有仓库,需加白名单)
# 编辑/etc/docker/daemon.json,添加以下内容
{
  "insecure-registries": ["http://宿主机IP:5000"]
}
# 3. 重启Docker生效
systemctl restart docker
# 4. 私有仓库镜像操作(标签+推送+拉取)
docker tag 镜像名:标签 宿主机IP:5000/镜像名:标签  # 打私有仓库标签
docker push 宿主机IP:5000/镜像名:标签            # 推私有仓库
docker pull 宿主机IP:5000/镜像名:标签            # 拉私有仓库
(2)企业版Harbor(生产首选)
# 核心步骤(记关键,无需记全命令)
1. 下载Harbor安装包并解压
2. 修改harbor.yml:配置主机名、HTTPS证书、admin密码
3. 执行./install.sh 一键安装
4. 访问Harbor UI:http/https://Harbor服务器IP,用admin密码登录

Ⅲ. 国内加速配置(解决Docker Hub拉取慢)

# 编辑/etc/docker/daemon.json,添加镜像源
{
  "registry-mirrors": [
    "https://docker.m.daocloud.io",
    "https://hub-mirror.c.163.com"
  ]
}
# 重启Docker生效
systemctl restart docker
# 验证加速是否生效
docker info | grep -i "registry mirror"

3、核心避坑&关键技巧

  1. 标签必加:推送仓库时镜像标签必须包含“仓库地址/用户名”(公有)或“私有仓库IP:端口”,否则默认推Docker Hub;
  2. 私有仓库访问:未配置insecure-registries会报“http: server gave HTTP response to HTTPS client”错误;
  3. Registry数据持久化:启动时必须挂载数据卷,否则容器删除后镜像丢失;
  4. Harbor核心优势:比Registry多RBAC权限、镜像扫描、图形化UI、审计日志,生产环境优先选。

4、经典场景速记

场景1:本地镜像推私有Registry并拉取

# 1. 启动带数据卷的Registry
docker run -d -p 5000:5000 --name my-registry -v my-registry-data:/var/lib/registry registry
# 2. 配置非加密访问(假设宿主机IP是192.168.1.100)
echo '{"insecure-registries":["http://192.168.1.100:5000"]}' > /etc/docker/daemon.json
systemctl restart docker
# 3. 打标签+推送
docker tag nginx:latest 192.168.1.100:5000/my-nginx:v1
docker push 192.168.1.100:5000/my-nginx:v1
# 4. 另一台主机拉取(需先配相同insecure-registries)
docker pull 192.168.1.100:5000/my-nginx:v1

→ 关键:私有仓库标签带IP+端口,必须配置非加密访问,数据卷持久化镜像。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐