私有镜像仓库搭建:Harbor企业级实践

举报
数字扫地僧 发表于 2025/03/27 18:35:48 2025/03/27
【摘要】 一、项目背景在现代软件开发和运维领域,容器化技术已成为不可或缺的一部分。Docker等容器技术的普及使得应用的部署和管理更加高效和灵活。然而,随着企业容器化应用的增多,镜像的管理和分发成为一个重要问题。Harbor作为一款开源的企业级私有镜像仓库,提供了丰富的功能,如用户权限管理、镜像扫描、审计日志等,满足了企业对镜像仓库的安全性和可管理性的需求。本文将深入探讨如何搭建和使用Harbor私...

一、项目背景

在现代软件开发和运维领域,容器化技术已成为不可或缺的一部分。Docker等容器技术的普及使得应用的部署和管理更加高效和灵活。然而,随着企业容器化应用的增多,镜像的管理和分发成为一个重要问题。Harbor作为一款开源的企业级私有镜像仓库,提供了丰富的功能,如用户权限管理、镜像扫描、审计日志等,满足了企业对镜像仓库的安全性和可管理性的需求。本文将深入探讨如何搭建和使用Harbor私有镜像仓库,结合实战部署和实例分析,帮助企业构建高效、安全的容器镜像管理平台。

二、前期准备

环境准备

确保有一台运行Linux系统的服务器,且该服务器能够访问互联网。以下是环境准备的具体步骤:

  1. 安装Docker:Harbor基于容器化技术,因此需要先安装Docker。

    # 更新包列表
    sudo apt update
    
    # 安装必要的包
    sudo apt install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
    
    # 添加Docker的官方GPG密钥
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
    
    # 将Docker的APT仓库添加到系统中
    sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
    
    # 再次更新包列表
    sudo apt update
    
    # 安装Docker CE和containerd
    sudo apt install docker-ce docker-ce-cli containerd.io
    
    # 验证Docker是否安装成功
    sudo docker run hello-world
    
  2. 安装Docker Compose:用于管理Harbor的容器编排。

    # 下载Docker Compose二进制文件
    sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    
    # 添加可执行权限
    sudo chmod +x /usr/local/bin/docker-compose
    
    # 验证安装是否成功
    docker-compose --version
    
  3. 配置Docker用户组:为了能够无需sudo即可运行Docker命令,可以将用户添加到docker用户组。

    sudo usermod -aG docker ${USER}
    

    注销并重新登录后,即可生效。

下载Harbor安装包

从Harbor的官方GitHub仓库下载安装包。

# 创建安装目录
mkdir harbor && cd harbor

# 下载Harbor安装包
curl -L https://github.com/goharbor/harbor/releases/download/v2.5.1/harbor-offline-installer-v2.5.1.tgz -o harbor-offline-installer.tgz

# 解压安装包
tar -xvf harbor-offline-installer.tgz

配置Harbor

在安装Harbor之前,需要根据实际需求进行一些配置。

  1. 编辑harbor.yml文件:这是Harbor的主要配置文件,包含了诸如主机名、管理员密码、存储路径等关键信息。

    cp harbor.yml.tmpl harbor.yml
    

    使用文本编辑器打开harbor.yml文件,并根据实际情况修改以下内容:

    hostname: reg.yourdomain.com  # 替换为你的域名或服务器IP
    
    http:
      port: 80
    
    https:
      enabled: false  # 如果需要启用HTTPS,可设置为true,并配置相关证书路径
    
    database:
      type: postgresql
    
    # 配置存储路径
    storage:
      filesystem:
        volume_path: /data
    
  2. 准备SSL证书(可选):如果启用了HTTPS,需要准备SSL证书,并将其路径配置在harbor.yml中。

  3. 安装Harbor:运行安装脚本。

    ./install.sh
    

三、实战部署

启动Harbor

安装完成后,启动Harbor服务。

cd install
./prepare
docker-compose up -d

访问Harbor Web界面

在浏览器中访问http://reg.yourdomain.com(替换为实际的域名或IP地址),使用默认管理员账号(用户名:admin,密码:Harbor.2023)登录。

配置项目和用户

在Harbor中创建项目和用户,并分配相应的权限。

  1. 创建项目:在Harbor Web界面中,点击“Projects” -> “Create Project”,填写项目名称和描述,选择访问级别(公开或私有)。

  2. 创建用户:点击“Administration” -> “Users” -> “Create User”,填写用户信息,并分配到相应的项目和角色。

  3. 配置权限:在项目设置中,为用户或用户组分配推送和拉取权限。

推送和拉取镜像

使用Docker CLI与Harbor进行交互。

  1. 登录Harbor

    docker login reg.yourdomain.com
    

    输入用户名和密码进行登录。

  2. 推送镜像

    # 标记本地镜像
    docker tag nginx:latest reg.yourdomain.com/library/nginx:latest
    
    # 推送镜像到Harbor
    docker push reg.yourdomain.com/library/nginx:latest
    
  3. 拉取镜像

    docker pull reg.yourdomain.com/library/nginx:latest
    

使用Harbor的高级功能

Harbor提供了许多企业级功能,如镜像扫描、审计日志、复制等。

  1. 镜像扫描:Harbor集成了Clair漏洞扫描工具,可以在推送镜像时自动扫描漏洞。

    # 在Harbor Web界面中启用扫描功能
    
  2. 审计日志:查看和管理操作日志,确保合规性。

    # 在Harbor Web界面中查看审计日志
    
  3. 镜像复制:在不同Harbor实例或仓库之间复制镜像。

    # 在Harbor Web界面中配置复制任务
    

四、实例分析

实例一:企业应用部署

假设企业需要部署多个应用,每个应用都有自己的镜像和版本。通过Harbor可以集中管理这些镜像,并控制访问权限。

# 创建项目和用户(通过Harbor Web界面)

# 构建应用镜像
docker build -t reg.yourdomain.com/myapp:latest .

# 推送镜像
docker push reg.yourdomain.com/myapp:latest

# 在生产环境中拉取并运行镜像
docker pull reg.yourdomain.com/myapp:latest
docker run -d --name myapp reg.yourdomain.com/myapp:latest

实例二:CI/CD集成

将Harbor与CI/CD管道集成,实现自动化的镜像构建、扫描和部署。

# .gitlab-ci.yml
stages:
  - build
  - deploy

build:
  stage: build
  script:
    - docker build -t reg.yourdomain.com/myapp:latest .
    - docker login reg.yourdomain.com -u $HARBOR_USER -p $HARBOR_PASSWORD
    - docker push reg.yourdomain.com/myapp:latest

deploy:
  stage: deploy
  script:
    - docker pull reg.yourdomain.com/myapp:latest
    - docker run -d --name myapp reg.yourdomain.com/myapp:latest

五、项目发展

随着业务的增长和需求的变化,我们可能需要对Harbor的使用进行扩展和优化。

高可用性部署

为了确保Harbor服务的高可用性,可以采用多节点部署和负载均衡。

# 配置Harbor的高可用性(参考官方文档)

集成LDAP/AD

将Harbor与企业的LDAP或AD目录服务集成,统一管理用户身份。

# 在Harbor Web界面中配置LDAP/AD集成

自动化备份和恢复

定期备份Harbor的数据和配置,确保在故障时能够快速恢复。

# 备份Harbor数据
docker exec -t harbor-db pg_dump -U postgres -d harbor > harbor-db-backup.sql

# 备份存储路径
rsync -avz /data/ /backup/harbor/

六、总结

本文深入探讨了如何搭建和使用Harbor私有镜像仓库,结合实战部署和实例分析,展示了其在企业级场景下的应用和优势。从环境准备、安装配置,到实战部署和高级功能使用,Harbor提供了强大的功能和灵活的配置选项,满足企业对镜像管理的需求。随着容器化技术的不断发展,理解和掌握Harbor对于每一个开发者和运维工程师来说都显得尤为重要。通过合理规划和持续优化,企业可以构建一个既安全又高效的镜像管理平台,加速应用的交付和部署。

七、参考文献

  • [Harbor官方文档]

八、常见问题解答

问题 解答
Harbor安装失败 查看安装日志,定位具体的错误原因。常见问题包括权限不足、依赖包缺失、配置文件语法错误等
用户无法登录Harbor 检查用户名和密码是否正确,确认用户是否被禁用或锁定。检查Harbor的服务状态,确保所有容器正常运行
镜像推送失败 查看Docker客户端的输出日志,检查Harbor服务是否正常运行,网络连接是否正常。确认目标项目是否存在,并且用户是否有推送权限
如何升级Harbor版本 参考Harbor官方文档,备份现有数据和配置,下载新版本的安装包,按照升级指南进行操作
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。