一篇文章带你了解一款强大的本地镜像库系统---Harbor

一、Harbor本地镜像库特点

Harbor 是由 VMware 开源的企业级容器镜像仓库系统,基于 Docker Registry 扩展了以下核心功能:

  1. 企业级权限管理

    • 支持基于角色的访问控制(RBAC),可按项目分配用户权限(如 Guest、Developer、Admin 等),满足多团队协作需求。
    • 集成 LDAP/AD 身份认证,可对接企业现有用户体系。
  2. 镜像生命周期管理

    • 提供图形化界面管理镜像,支持删除无用镜像并回收存储空间。
    • 支持镜像复制功能,可同步镜像到远程 Harbor 实例,实现灾备或多地部署。
  3. 安全与审计

    • 记录所有操作的审计日志,满足合规性要求。
    • 支持镜像漏洞扫描(需集成 Clair 等工具),保障镜像安全性。
  4. 扩展性与集成

    • 提供 RESTful API,便于与 CI/CD 工具(如 Jenkins、GitLab)集成。
    • 支持 HTTPS 加密通信,保障数据传输安全。

二、Harbor 安装部署

1. 环境准备

  • 硬件要求:建议至少 2 核 CPU、4G 内存、40G 存储(如 PVE 虚拟机)。

  • 软件依赖

    • Docker 1.10+ 和 Docker Compose 1.6+。
    • 配置 Docker 加速器(如阿里云)加速镜像下载。

2. 安装步骤

  • 在线安装

    ruby 复制代码
    # 下载安装包  
    wget https://github.com/goharbor/harbor/releases/download/v2.4.1/harbor-online-installer-v2.4.1.tgz   
    tar zxvf harbor-online-installer-v2.4.1.tgz   
    cd harbor  
    
    # 修改配置文件  
    vi harbor.yml   # 设置主机名、数据库密码等  
    
    # 执行安装  
    ./install.sh   
    ``` ```  
  • 离线安装

    下载离线包(如

    harbor-offline-installer-v2.4.1.tgz

    ),解压后按上述步骤配置并安装。

3. 配置 HTTPS(可选)

  • 生成 SSL 证书(如使用 Let's Encrypt)。

  • 修改

    harbor.yml

    https

    相关配置,重启服务。


bash 复制代码
内网虚拟机部署:
https://goharbor.io/docs/2.2.0/install-config/configure-https/
1.公司内网如果平时配置了docker的代理去dockerhub拉镜像的话,想要登陆成功私有仓库,需要移除/etc/systemd/system/docker.service.d目录下的http-proxy.conf和https-proxy.conf,否则内网的xx.xx.xx.xx:80在docker login的时候就到公网去找这个ip了,就会40x。
2./etc/docker/daemon.json增加一行如下:
{
    "registry-mirrors": [
                "https://c5577d9e1d5d49ba81ff33f7309cefa9.mirror.swr.myhuaweicloud.com",
                "https://docker.mirrors.sjtug.sjtu.edu.cn",
                "https://dockerproxy.com",
                "https://docker.m.daocloud.io",
                "https://docker.1ms.run",
                "https://hub2.nat.tf",
                "https://docker.1panel.dev",
                "https://docker.1panelproxy.com",
                "https://docker.cloudlayer.icu"
        ],
     "insecure-registries": [
                "http://192.168.6.128:8083"
        ]
}
systemctl daemon-reload
service docker restart
docker login -u admin -p admin123 192.168.6.128:8083
docker tag dpanel/dpanel:latest 192.168.6.128:8083/test/dpanel:latest
docker push 192.168.6.128:8083/test/dpanel:latest

三、Harbor 使用方法

1. Web 管理界面

  • 访问

    http(s)://<Harbor_IP>

    ,默认账号密码为

    admin/Harbor12345

  • 项目管理

    • 创建公开/私有项目,分配用户角色(如开发人员 Push/Pull 权限,测试人员仅 Pull 权限)。

2. 客户端操作

  • 推送镜像

    xml 复制代码
    # 登录 Harbor  
    docker login <Harbor_IP> -u <用户名> -p <密码>  
    
    # 标记本地镜像  
    docker tag <本地镜像名> <Harbor_IP>/<项目名>/<镜像名>:标签  
    
    # 推送镜像  
    docker push <Harbor_IP>/<项目名>/<镜像名>:标签  
    ``` ```  
  • 拉取镜像

    javascript 复制代码
    docker pull <Harbor_IP>/<项目名>/<镜像名>:标签  
    ``` ```  

3. 客户端配置(HTTP 模式)

  • 修改

    /etc/docker/daemon.json

    ,添加:

    go 复制代码
    {  
      "insecure-registries": ["<Harbor_IP>:端口"]  
    }  
    ``` ```  
  • 重启 Docker 服务:

    systemctl restart docker


四、总结

Harbor 通过权限管理、镜像复制、安全审计等功能,解决了企业级镜像仓库的痛点。部署时需注意网络配置和 HTTPS 设置,使用时需合理分配用户权限并配置客户端信任列表。更多细节可参考官方文档或上述引用的 CSDN 博客。

相关推荐
ModyQyW12 分钟前
用 AI 驱动 wot-design-uni 开发小程序
前端·uni-app
说码解字18 分钟前
Kotlin lazy 委托的底层实现原理
前端
爱分享的程序员1 小时前
前端面试专栏-算法篇:18. 查找算法(二分查找、哈希查找)
前端·javascript·node.js
翻滚吧键盘1 小时前
vue 条件渲染(v-if v-else-if v-else v-show)
前端·javascript·vue.js
vim怎么退出1 小时前
万字长文带你了解微前端架构
前端·微服务·前端框架
你这个年龄怎么睡得着的1 小时前
为什么 JavaScript 中 'str' 不是对象,却能调用方法?
前端·javascript·面试
Java水解1 小时前
前端常用单位em/px/rem/vh/vm到底有什么区别?
前端
CAD老兵1 小时前
Vite 如何借助 esbuild 实现极速 Dev Server 体验,并支持无 source map 的源码调试
前端
南屿im1 小时前
JavaScript 手写实现防抖与节流:优化高频事件处理的利器
前端·javascript
Spider_Man1 小时前
从零开始构建React天气应用:API集成与UI设计全指南 🌤️
前端·react.js