网站Logo linux从入门到入土

企业级Docker镜像仓库完全指南:从Registry到Harbor

admin
21
2023-11-09

企业级Docker镜像仓库完全指南:从Registry到Harbor

概述

在容器化部署成为主流的今天,高效管理Docker镜像至关重要。本文将全面介绍两种主流镜像仓库解决方案:轻量级Registry和企业级Harbor,帮助您构建完善的容器镜像管理体系。

1. Registry私有仓库:轻量级解决方案

1.1 环境规划与准备

架构设计:

[开发机器] → [Registry服务器:5000] ← [生产服务器]
      ↓              ↓               ↓
   构建镜像       存储镜像        拉取部署

环境准备:

# 所有节点添加hosts解析
cat >> /etc/hosts << 'EOF'
10.0.0.81 docker01 docker01.your.cn 
10.0.0.82 docker02 docker02.your.cn 
reg.your.cn harbor.your.cn
EOF

1.2 快速部署指南

配置Docker客户端:

// 所有Docker节点配置 /etc/docker/daemon.json
{
  "insecure-registries": [
    "reg.your.cn:5000",
    "harbor.your.cn"
  ],
  "registry-mirrors": [
    "https://mirror.aliyuncs.com",
    "https://docker.mirrors.ustc.edu.cn",
    "https://docker.nju.edu.cn"
  ]
}

重启Docker服务:

systemctl restart docker

启动Registry容器:

# 使用Docker运行Registry
docker run -d \
  --name "your_registry" \
  -p 5000:5000 \
  -v registry:/var/lib/registry \
  --restart=always \
  registry:latest

关键参数说明:

  • -v registry:/var/lib/registry:数据持久化,防止容器删除导致数据丢失
  • --restart=always:确保服务异常退出后自动重启
  • registry:命名卷,可通过 docker volume inspect registry 查看实际存储路径

1.3 镜像管理操作

镜像标签管理:

# 为镜像添加私有仓库标签
docker tag web:kodbox_v1 reg.your.cn:5000/your/web:kodbox_v1

# 格式说明:
# docker tag 源镜像名[:标签] 目标仓库地址/[命名空间/]镜像名[:标签]

镜像推送与拉取:

# 推送镜像到私有仓库
docker push reg.your.cn:5000/your/web:kodbox_v1

# 从私有仓库拉取镜像
docker pull reg.your.cn:5000/your/web:kodbox_v1

# 登录认证(如配置认证)
docker login reg.your.cn:5000

1.4 Docker Compose部署方案

# docker-compose.yml
version: '3.8'

services:
  registry:
    image: registry:latest
    container_name: your_registry
    ports:
      - "5000:5000"
    volumes:
      - registry_data:/var/lib/registry
    restart: always
    environment:
      - REGISTRY_STORAGE_DELETE_ENABLED=true

volumes:
  registry_data:

启动服务:

docker-compose up -d

2. Harbor企业级仓库:生产环境首选

2.1 环境要求与准备

硬件要求:

环境类型 CPU 内存 磁盘 网络
测试环境 2核 4GB 40GB 稳定
生产环境 4核+ 8GB+ 100GB+ 高速

软件依赖:

  • Docker 20.10+
  • Docker Compose 2.0+
  • 域名和SSL证书(生产环境)

2.2 安装与配置

解压安装包:

tar xf harbor-offline-installer-v2.3.1.tgz -C /app/tools/
cd /app/tools/harbor

目录结构说明:

harbor/
├── common.sh              # 通用脚本
├── harbor.yml.tmpl        # 配置模板
├── harbor.yml             # 主配置文件
├── install.sh             # 安装脚本
├── prepare                # 准备脚本
└── LICENSE                # 许可证

配置Harbor:

# harbor.yml 关键配置
hostname: harbor.yourcompany.com    # 必须使用域名

# HTTP配置(测试环境)
http:
  port: 80

# HTTPS配置(生产环境必须)
https:
  port: 443
  certificate: /app/tools/harbor/ssl/yourdomain.com.pem
  private_key: /app/tools/harbor/ssl/yourdomain.com.key

# 管理员密码
harbor_admin_password: YourSecurePassword123!

# 数据库配置(可选)
database:
  password: harbor_db_password
  max_idle_conns: 100
  max_open_conns: 900

# 数据持久化
data_volume: /data/harbor

SSL证书准备:

# 创建证书目录
mkdir -p /app/tools/harbor/ssl/

# 放置证书文件(从证书提供商获取)
# yourdomain.com.pem  - 证书文件
# yourdomain.com.key  - 私钥文件

执行安装:

# 首次安装
./install.sh

# 配置更新后重新安装
./install.sh --with-notary --with-trivy  # 可选:添加安全扫描功能

2.3 服务验证与监控

检查服务状态:

# 查看所有组件状态
docker-compose ps

# 检查服务日志
docker-compose logs -f nginx

# API健康检查
curl -k https://harbor.yourcompany.com/api/v2.0/systeminfo

服务管理命令:

# 启动服务
docker-compose start

# 停止服务  
docker-compose stop

# 重启服务
docker-compose restart

# 查看服务状态
docker-compose ps

2.4 Harbor镜像管理

镜像生命周期管理:

# 登录Harbor
docker login harbor.yourcompany.com -u admin

# 打标签并推送
docker tag nginx:alpine harbor.yourcompany.com/prod-backend/web-nginx:v1
docker push harbor.yourcompany.com/prod-backend/web-nginx:v1

# 拉取镜像
docker pull harbor.yourcompany.com/prod-backend/web-nginx:v1

# 查看镜像列表
curl -u admin:password https://harbor.yourcompany.com/v2/_catalog

多环境镜像管理:

# 开发环境
docker tag app:dev harbor.yourcompany.com/dev/app:${BUILD_NUMBER}
docker push harbor.yourcompany.com/dev/app:${BUILD_NUMBER}

# 测试环境  
docker tag app:dev harbor.yourcompany.com/qa/app:${BUILD_NUMBER}
docker push harbor.yourcompany.com/qa/app:${BUILD_NUMBER}

# 生产环境
docker tag app:prod harbor.yourcompany.com/prod/app:${VERSION}
docker push harbor.yourcompany.com/prod/app:${VERSION}

3. 高级特性与最佳实践

3.1 安全加固

用户权限管理:

  • 创建项目级用户,遵循最小权限原则
  • 定期轮换访问令牌
  • 启用内容信任(Notary)

网络安全配置:

# 防火墙规则
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --permanent --add-port=443/tcp
firewall-cmd --permanent --add-port=4443/tcp
firewall-cmd --reload

3.2 备份与恢复

Harbor数据备份:

#!/bin/bash
# harbor_backup.sh

BACKUP_DIR="/backup/harbor/$(date +%Y%m%d)"
mkdir -p $BACKUP_DIR

# 停止服务
cd /app/tools/harbor
docker-compose down

# 备份数据
cp -r /data/harbor $BACKUP_DIR/
cp harbor.yml $BACKUP_DIR/

# 重新启动服务
docker-compose up -d

echo "Harbor backup completed: $BACKUP_DIR"

Registry数据备份:

# 备份Registry卷数据
docker run --rm -v registry:/source -v /backup:/backup alpine \
  tar czf /backup/registry_$(date +%Y%m%d).tar.gz -C /source .

3.3 性能优化

存储优化:

# 使用高性能存储
# 推荐:SSD存储,RAID配置
# 避免使用NFS等网络存储作为主存储

配置调优:

# harbor.yml 性能优化配置
log:
  level: info
  local:
    rotate_count: 50
    rotate_size: 200M
    location: /var/log/harbor

# 数据库连接优化
database:
  max_idle_conns: 50
  max_open_conns: 1000

4. 故障排查与维护

4.1 常见问题解决

登录认证失败:

# 清除本地认证缓存
docker logout harbor.yourcompany.com

# 重新登录
docker login harbor.yourcompany.com

推送镜像失败:

# 检查Docker配置
cat /etc/docker/daemon.json

# 验证网络连通性
curl -k https://harbor.yourcompany.com/v2/

# 检查证书有效性
openssl s_client -connect harbor.yourcompany.com:443

4.2 监控指标

关键监控项:

  • 存储空间使用率
  • API响应时间
  • 并发连接数
  • 镜像推送/拉取成功率

5. 方案对比与选型建议

特性 Registry Harbor
部署复杂度 简单 中等
用户管理 完善
镜像扫描 支持
日志审计 基础 详细
高可用 需自行配置 原生支持
适用场景 开发测试 生产环境

选型建议:

  • 开发测试:选择Registry,快速部署
  • 中小团队:Harbor基础版,平衡功能与复杂度
  • 企业生产:Harbor全功能版,满足安全合规要求

总结

通过本文的完整指南,您可以:

  1. 快速搭建轻量级Registry用于开发测试
  2. 部署功能完善的企业级Harbor满足生产需求
  3. 实施安全最佳实践保障镜像仓库安全
  4. 建立完善的备份和监控体系
动物装饰