news 2026/4/14 12:36:27

49 Harbor私有镜像仓库

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
49 Harbor私有镜像仓库

文章目录

  • 前言
  • 理论部分
    • 10_Harbor私有仓库概述
      • 10.1_搭建本地私有仓库
        • ①_下载registry镜像
        • ②_配置Docker守护进程
        • ③_运行Registry容器
        • ④_Docker容器的重启策略
        • ⑤_镜像操作原理
      • 10.2_Harbor_简介
        • ①_什么是Harbor
        • ②_Harbor特性
        • ③_Harbor架构
      • 10.3_部署Harbor服务
        • ①_安装DockerCompose
        • ②_下载_Harbor安装包
        • ③_修改_Harbor配置文件
        • ④_Harbor部署流程
      • 10.4_客户端上传镜像
      • 10.5_维护管理Harbor
        • ①_通过HarborWeb创建项目
        • ②_创建Harbor用户
        • ③_高级维护
  • 实验部分
    • 10_部署_Harbor_私有仓库
      • 10.1_搭建本地私有Registry
        • ① 下载registry镜像
        • ② 配置Docker守护进程
        • ③ 运行Registry容器
        • ④ 为镜像打标签
        • ⑤ 上传镜像到私有仓库
        • ⑥ 验证私有仓库内容
        • ⑦ 测试从私有仓库拉取镜像
      • 10.2_部署Harbor服务
        • ① 安装DockerCompose
        • ② 下载Harbor安装包
        • ③ 配置Harbor参数
        • ④ 启动Harbor服务
        • ⑤ 查看Harbor服务状态
        • ⑥ 创建新项目
      • 10.3_客户端上传镜像
        • ① 配置Docker客户端
        • ② 登录Harbor仓库
        • ③ 上传测试镜像
        • ④ 使用普通用户操作
      • 10.4_Harbor高级维护
        • ① 修改配置文件
        • ② 数据备份与迁移
        • ③ 完全清除Harbor
  • 结语

前言

本章详细讲解Docker私有仓库Harbor的部署与管理技术。Harbor作为企业级Docker镜像管理平台,弥补了Docker官方Registry功能单一的不足,提供完善的图形化界面、权限控制和安全特性。文章先介绍基础的本地Docker Registry,再深入解析Harbor的架构、部署和运维管理。文章内容实用性强,对生产环境中的容器镜像管理具有重要指导意义。

  1. 搭建本地的私有仓库
  2. 什么是Harbor
    1. 特性 构成 架构 架构数据流向
    2. Harbor 架构
  3. Harbor的部署及配置
  4. 如何在日常工作中维护管理Harbor

理论部分

10_Harbor私有仓库概述

Docker私有仓库:是在企业内部网络中部署的Docker镜像存储和分发系统,让用户能够在内部安全地存储和共享Docker镜像,无需依赖公共互联网。

Harbor:是一个开源的企业级Docker镜像仓库管理系统,提供图形化管理界面、用户权限控制、安全扫描等高级功能,适合企业级容器镜像管理。

10.1_搭建本地私有仓库

Docker Registry:是Docker官方提供的基础镜像仓库解决方案,虽然功能简单但能满足基本的私有仓库需求。

①_下载registry镜像

Registry镜像:registry

  • Docker官方提供的标准镜像仓库实现,是DockerHub和私有仓库的基础。
  • 该镜像只提供基础的镜像存储和分发功能。
②_配置Docker守护进程

Docker守护进程配置文件

  • /etc/docker/daemon.json:Docker服务端配置文件路径
  • 需要添加insecure-registries参数才能访问HTTP私有仓库
③_运行Registry容器

Registry容器主要配置

  • 数据卷映射:-v /data/registry:/var/lib/registry将宿主机目录挂载到容器内存储镜像数据
  • 端口映射:-p 5000:5000将宿主机5000端口映射到容器5000端口
  • 重启策略:--restart=always确保容器异常退出后自动重启
④_Docker容器的重启策略
策略应用场景
no容器退出时不自动重启,适用于一次性任务
on-failure仅当容器非正常退出时才重启(返回错误代码),适用于需要稳定性保障的应用
on-failure:3最多自动重启3次,3次失败后不再重启,适用于可能间歇性出错的应用
always无论退出状态如何,容器退出后总是自动重启,适用于需要持续运行的关键服务
unless-stopped容器停止时除Docker守护进程初始停止状态外都重启,适用于需长期运行的服务
⑤_镜像操作原理

镜像操作命令原理

  • docker tag:镜像标签本质上是指向同一镜像的引用名称,可为同一镜像创建多个名称
  • docker push:采用分层推送机制,只传输本地有而远程仓库没有的层
  • docker pull:类似push,只拉取缺失的镜像层
  • REST API交互:仓库内容可通过HTTP API查询,如/v2/_catalog列出所有镜像

10.2_Harbor_简介

Harbor:是VMware开源并捐赠给CNCF的容器镜像仓库系统,是Docker Registry的增强版解决方案。

①_什么是Harbor

Harbor定位:企业级容器镜像仓库管理平台,提供比Docker官方Registry更多企业级功能。

与Docker Registry的区别:Docker Registry只提供基础的镜像存储和分发功能,而Harbor增加了图形界面权限控制镜像扫描等企业级功能,提供更完善的容器镜像生命周期管理

②_Harbor特性

Harbor核心特性

  • 图形化管理界面:基于Web的管理控制台,支持多语言
  • 基于角色的访问控制:支持系统管理员、项目管理员、开发人员、访客四类角色
  • LDAP/AD集成:支持与企业目录服务集成,简化用户管理
  • 镜像复制:支持不同Harbor实例间自动同步镜像,实现多中心镜像分发
  • 审计日志:完整记录所有用户操作,便于安全审计和问题定位
  • 安全扫描:集成Clair漏洞扫描工具,自动检查镜像安全问题
  • 容器签名:支持镜像内容信任(CIT)机制
③_Harbor架构

Harbor架构组件

  • Proxy:反向代理服务器,处理所有客户端请求
  • Registry:Docker原生Registry组件,负责镜像存储
  • Core Services:包含Web UI、API和认证服务等
  • Database:存储配置和元数据,基于PostgreSQL
  • Job Services:处理异步任务,如镜像复制
  • Log Collector:收集系统日志,基于Fluentd

Harbor数据流向原理

认证请求

镜像请求

验证

操作

触发

镜像同步

日志

用户/客户端

Proxy
反向代理

Core Services
UI/API/Token

认证源
LDAP/AD

Registry
镜像存储

Database

Job Services

远程Harbor

Log Collector

10.3_部署Harbor服务

Harbor部署特点:通过Docker Compose管理多个容器组件,每个组件是独立的Docker容器。

①_安装DockerCompose

Docker Compose:用于定义和运行多容器Docker应用的工具,是Harbor部署的关键依赖。

安装路径/usr/local/bin/docker-compose是Docker Compose的常规安装路径

②_下载_Harbor安装包

Harbor安装方式

  • 在线安装:实时从网络拉取镜像,部署时间较长
  • 离线安装:预先下载完整安装包,生产环境推荐使用
  • 下载地址:https://github.com/goharbor/harbor/releases
③_修改_Harbor配置文件

Harbor配置文件

  • /usr/local/harbor/harbor.yml:Harbor主要配置文件
  • 配置项分为必需参数和可选参数两类

关键参数说明

  • hostname:Harbor服务访问IP或域名,必须配置
  • harbor_admin_password:管理员初始密码
  • httphttps:配置HTTP/HTTPS服务
  • data_volume:数据存储路径,影响镜像存储位置
④_Harbor部署流程

Harbor启动三步曲

  1. 预处理:执行prepare脚本,基于配置生成Docker服务文件
  2. 安装:执行install.sh脚本,拉取镜像并启动服务
  3. 验证:使用docker-compose ps检查服务状态

10.4_客户端上传镜像

Docker客户端配置:必须配置为识别私有仓库,否则无法连接。

配置Docker客户端关键点

  • 在Docker服务配置中添加--insecure-registry参数
  • 需要重启Docker服务使配置生效
  • 注意:生产环境应使用HTTPS而非HTTP,避免安全风险

10.5_维护管理Harbor

Harbor管理维度:涵盖项目创建、用户管理、权限控制、日志监控等多方面。

①_通过HarborWeb创建项目

项目类型

  • 公共项目:所有用户可读,无需登录即可访问
  • 私有项目:只有授权用户才能访问,企业常用类型
②_创建Harbor用户

用户角色分类

  • 系统管理员:拥有管理所有项目的权限
  • 项目管理员:管理特定项目
  • 开发人员:有推送和拉取权限
  • 访客:只有拉取权限
③_高级维护

关键维护路径

  • 镜像数据:/data/registry
  • 数据库:/data/database
  • 日志:/var/log/Harbor
  • 配置文件:/usr/local/harbor/harbor.yml

维护原则:修改配置前必须先停止服务,数据迁移时注意保留卷数据

实验部分

10_部署_Harbor_私有仓库

10.1_搭建本地私有Registry

① 下载registry镜像
dockerpull registry

docker pull:从镜像仓库下载指定镜像的命令
registry:Docker官方提供的基础镜像仓库镜像名称
该命令将从Docker Hub下载registry最新版本镜像

② 配置Docker守护进程
vim/etc/docker/daemon.json
{"insecure-registries":["192.168.10.23:5000"],"registry-mirrors":["https://ae3f5qei.mirror.aliyuncs.com"]}

insecure-registries:指定允许访问的不安全HTTP私有仓库地址列表
192.168.10.23:5000:本地私有仓库IP地址和端口号
registry-mirrors:配置Docker镜像加速器地址
配置文件保存后必须重启Docker服务生效

systemctl daemon-reload systemctl restart docker.service

systemctl daemon-reload:重载系统服务配置
systemctl restart docker.service:重启Docker服务使配置生效

③ 运行Registry容器
dockerrun -itd -v /data/registry:/var/lib/registry -p5000:5000 --restart=always --name registry registry:latest

-itd:以交互方式启动并在后台运行容器
-v /data/registry:/var/lib/registry:将宿主机目录挂载到容器内,实现数据持久化
-p 5000:5000:宿主机5000端口映射到容器5000端口
--restart=always:设置容器退出后自动重启策略
--name registry:指定容器名称
registry:latest:使用registry官方镜像的latest标签

④ 为镜像打标签
dockertag centos:7192.168.10.23:5000/centos:v1

docker tag:为现有镜像创建新标签的命令
centos:7:源镜像名称和标签
192.168.10.23:5000/centos:v1:目标标签格式(仓库IP/镜像名称:自定义标签)
标签格式必须包含仓库地址才能成功推送到私有仓库

⑤ 上传镜像到私有仓库
dockerpush192.168.10.23:5000/centos:v1

docker push:将本地镜像推送到指定仓库的命令
推送过程会分层传输,只上传本地有而远程没有的层
推送成功后可在私有仓库中查看新镜像

⑥ 验证私有仓库内容
curlhttp://192.168.10.23:5000/v2/_catalog

curl:命令行HTTP客户端工具
http://192.168.10.23:5000/v2/_catalog:获取私有仓库中所有镜像的API端点
响应为JSON格式,包含仓库中所有镜像名称列表

curlhttp://192.168.10.23:5000/v2/centos/tags/list

http://192.168.10.23:5000/v2/centos/tags/list:获取特定镜像所有标签的API端点
响应显示指定镜像的所有版本标签

⑦ 测试从私有仓库拉取镜像
dockerrmi -f 8652b9f0cb4cdockerpull192.168.10.23:5000/centos:v1

docker rmi -f 8652b9f0cb4c:强制删除指定ID的本地镜像
docker pull 192.168.10.23:5000/centos:v1:从私有仓库拉取镜像
验证镜像是否可从私有仓库正常下载

10.2_部署Harbor服务

① 安装DockerCompose
curl-L https://github.com/docker/compose/releases/download/1.21.1/docker-compose-$(uname-s)-$(uname-m)-o /usr/local/bin/docker-composechmod+x /usr/local/bin/docker-composedocker-compose--version

curl -L:下载Docker Compose二进制文件
$(uname -s)-$(uname -m):自动获取当前系统和架构
chmod +x:添加可执行权限
docker-compose --version:验证安装成功
可替代方式:sudo curl -L "https://github.com/docker/compose/releases/download/2.26.0/docker-compose-linux-aarch64" -o /usr/local/bin/docker-compose

② 下载Harbor安装包
wgethttps://github.com/goharbor/harbor/releases/download/v2.4.0/harbor-offline-installer-v2.4.0.tgztarzxvf harbor-offline-installer-v2.4.0.tgz -C /usr/local/

wget:下载Harbor离线安装包
版本号可能需要更新为最新版
-C /usr/local/:指定解压目标目录
离线安装包包含所有必需的Docker镜像

③ 配置Harbor参数
vim/usr/local/harbor/harbor.yml
hostname:192.168.10.23harbor_admin_password:Harbor12345

hostname:Harbor的访问地址,必须是IP或可解析的域名
harbor_admin_password:设置管理员初始密码
修改前注意备份原配置文件
可选参数可在Harbor管理界面后期调整

④ 启动Harbor服务
cd/usr/local/harbor/ ./prepare ./install.sh

./prepare:根据harbor.yml配置生成必要的文件和证书
./install.sh:最终安装脚本,拉取镜像和启动容器
安装过程可能需要几分钟,取决于网络速度

⑤ 查看Harbor服务状态
cd/usr/local/harbor/docker-composeps

docker-compose ps:查看Harbor所有组件容器状态
执行命令必须在docker-compose.yml所在目录
成功状态下所有容器状态应为"Up"

⑥ 创建新项目
  1. 浏览器访问:http://192.168.10.23
  2. 使用用户名:admin,密码:Harbor12345 登录
  3. 点击"+项目"按钮
  4. 输入项目名称:myproject-yjs
  5. 勾选"公开"选项创建公共项目

登录成功后可在管理界面进行各项配置
项目名称需符合命名规范
公共项目所有用户可读,私有项目需授权访问

10.3_客户端上传镜像

① 配置Docker客户端
vim/usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd -H fd:// --insecure-registry 192.168.10.23 --containerd=/run/containerd/containerd.sock

添加--insecure-registry参数指定私有仓库IP
配置文件需添加在ExecStart=行的末尾
不同系统路径可能略有不同

systemctl daemon-reload systemctl restartdocker

重启Docker服务使配置生效
必须重启才能识别新的配置参数

② 登录Harbor仓库
dockerlogin -u admin -p Harbor12345 http://192.168.10.23

docker login:Docker客户端登录仓库命令
-u:指定用户名
-p:指定密码
登录凭证将保存在/root/.docker/config.json
首次登录可能有安全警告

③ 上传测试镜像
dockerpull nginxdockertag nginx:latest192.168.10.23/myproject-yjs/nginx:v1dockerpush192.168.10.23/myproject-yjs/nginx:v1

先下载测试镜像nginx
标签格式:仓库地址/项目名称/镜像:标签
推送过程会分层上传,显示详细进度

④ 使用普通用户操作
dockerlogout192.168.10.23dockerlogin -u yjs-zhangsan -p Abc123456 http://192.168.10.23dockerpull192.168.10.23/myproject-yjs/nginx:v1

docker logout:注销当前用户登录
先在Harbor管理界面创建新用户并分配权限
普通用户只能访问授权的项目

10.4_Harbor高级维护

① 修改配置文件
cd/usr/local/harbordocker-composedown -vvimharbor.yml ./preparedocker-composeup -d

修改配置前必须先停止服务
-v选项保留数据卷
修改仅影响可选参数,必需参数需谨慎修改
修改后使用prepare更新环境

② 数据备份与迁移
cd/usr/local/harbordocker-composedown -vcd/data/registry/docker/registry/v2/repositories/myproject-yjstarzcvf kgc-registry.tar.gz ./*

先停止Harbor服务保留数据卷
镜像数据位于/data/registry目录
打包后可迁移至新服务器
迁移后需配置新服务器的Harbor

③ 完全清除Harbor
cd/usr/local/harbordocker-composedown -vrm-r /data/databaserm-r /data/registry

docker-compose down -v:停止服务并删除容器
rm -r:彻底删除数据目录
操作无法恢复,需谨慎执行
适用于需要重装Harbor的场景

结语

Harbor是企业实践中最常用的Docker私有仓库解决方案,提供了比原生Registry丰富的功能集。部署时要注意正确配置hostname和仓库访问方式,客户端必须设置insecure-registry参数才能连接。使用时需遵循标准流程:先创建项目,再分配权限,最后推送镜像。生产环境中应启用HTTPS增强安全性,并定期进行安全扫描。

[!question] 为什么Docker客户端默认无法连接到HTTP私有仓库?
Docker官方安全策略要求所有镜像仓库使用HTTPS,私有仓库若使用HTTP需在Docker服务端配置–insecure-registry参数

[!question] Harbor的核心组件有哪些?
Proxy(反向代理)、Registry(镜像存储)、Core Services(核心服务)、Database(数据库)、Job Services(作业服务)和Log Collector(日志收集器)

[!question] 如何让普通用户访问特定Harbor仓库?

  1. 在Harbor Web界面创建用户 2. 为该用户分配项目成员角色 3. 客户端使用该账户凭证登录

[!question] Harbor的项目权限有哪几种类型?
系统管理员、项目管理员、开发人员和访客,各自拥有不同的权限级别

[!question] 如何迁移Harbor的镜像数据到新服务器?
2. 停止Harbor服务 2. 备份/data/registry目录 3. 在新服务器部署Harbor 4. 恢复备份数据到相同路径

[!question] Docker Compose在Harbor中的作用是什么?
作为编排工具管理Harbor多个容器组件,定义容器间的依赖关系、网络配置和启动顺序,简化多容器应用部署

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/14 12:12:59

Plum 完整指南:Rime 输入法配置管理的终极解决方案

Plum 完整指南:Rime 输入法配置管理的终极解决方案 【免费下载链接】plum 東風破 /plum/: Rime configuration manager and input schema repository 项目地址: https://gitcode.com/gh_mirrors/pl/plum Plum 是专为 Rime 输入法引擎设计的强大配置管理工具&…

作者头像 李华
网站建设 2026/4/15 8:05:59

LZ4极速压缩终极指南:如何实现毫秒级数据处理

LZ4极速压缩终极指南:如何实现毫秒级数据处理 【免费下载链接】lz4 Extremely Fast Compression algorithm 项目地址: https://gitcode.com/GitHub_Trending/lz/lz4 在现代数据处理场景中,LZ4压缩算法以其惊人的速度和效率成为业界标杆。这款高性…

作者头像 李华
网站建设 2026/4/15 8:06:31

2026毕设ssm+vue基于疫情防控的物资管理与发放系统论文+程序

本系统(程序源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、选题背景 关于突发公共卫生事件中物资保障问题的研究,现有研究主要以宏观层面的应急物流、供应链协同及政策建议为主&#…

作者头像 李华
网站建设 2026/4/10 23:05:53

SMP语言基础知识-应用系统,个人开发者的痛点(2)

接上篇 SMP语言基础知识-应用系统,个人开发者的痛点(1) 三、技术的痛点 1、 吃技术老本 个人开发者出来创业一般都是高手,而高手的特点就是有技术专长。这个长处当然是长处,但是,也可能变为短处&#xff0c…

作者头像 李华
网站建设 2026/4/11 0:28:29

Screen to Gif时间轴编辑功能深度剖析

让 GIF 会说话:Screen to Gif 时间轴编辑的实战智慧你有没有过这样的经历?录完一段操作演示,回放时却发现动画太快、细节看不清,或者中间夹杂着一堆静止画面,节奏像卡顿的幻灯片。这时候,一个能“精雕细琢”…

作者头像 李华