一篇文章带你了解一款强大的本地镜像库系统---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 博客。

相关推荐
IT_陈寒1 小时前
Vue3性能优化:掌握这5个Composition API技巧让你的应用快30%
前端·人工智能·后端
excel10 小时前
在 Node.js 中用 C++ 插件模拟 JavaScript 原始值包装对象机制
前端
excel13 小时前
应用程序协议注册的原理与示例
前端·后端
我是天龙_绍15 小时前
浏览器指纹,一个挺实用的知识点
前端
theshy15 小时前
前端自制接口抓取工具:一键收集并导出接口列表
前端
wayne21415 小时前
跨平台开发框架全景分析:Flutter、RN、KMM 与腾讯 Kuikly 谁更值得选择?
前端
LuckySusu15 小时前
【js篇】JavaScript 对象创建的 6 种方式:从基础到高级
前端·javascript
LuckySusu15 小时前
【js篇】async/await 的五大核心优势:让异步代码像同步一样清晰
前端·javascript
艾雅法拉拉15 小时前
JS知识点回顾(1)
前端·javascript·面试
LuckySusu15 小时前
【js篇】Promise 解决了什么问题?—— 彻底告别“回调地狱”
前端·javascript