一、环境准备与组件选择
1.1 基础环境要求
搭建私有仓库需满足以下条件:
- 操作系统:Linux发行版(推荐CentOS 7+/Ubuntu 20.04+)
- 内存要求:建议4GB以上(生产环境8GB+)
- 存储空间:根据镜像规模预留充足磁盘(建议SSD)
- 网络配置:开放80/443端口(HTTP/HTTPS)及管理端口
1.2 核心组件选型
- 容器运行时:Docker CE 20.10+(需支持buildx特性)
- 编排工具:Docker Compose 1.29+(推荐最新稳定版)
- 仓库系统:Harbor 2.x(开源企业级解决方案)
- 存储后端:本地存储/对象存储(生产环境推荐分布式存储)
二、组件安装与配置
2.1 Docker环境部署
# 安装依赖包sudo yum install -y yum-utils device-mapper-persistent-data lvm2# 添加官方仓库sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo# 安装指定版本(示例)sudo yum install -y docker-ce-20.10.17 docker-ce-cli-20.10.17 containerd.io# 配置镜像加速(可选)sudo mkdir -p /etc/dockercat > /etc/docker/daemon.json <<EOF{"registry-mirrors": ["https://<mirror-url>"]}EOFsudo systemctl restart docker
2.2 Docker Compose安装
# 下载二进制包(根据实际版本调整)sudo curl -L "https://github.com/docker/compose/releases/download/v2.15.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose# 设置执行权限sudo chmod +x /usr/local/bin/docker-compose# 创建软链接sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose# 验证安装docker-compose version
2.3 Harbor安装部署
# 解压安装包(选择离线版本)tar -xzvf harbor-offline-installer-v2.14.2.tgz -C /optcd /opt/harbor# 配置模板调整cp harbor.yml.tmpl harbor.ymlvim harbor.yml
关键配置项说明:
hostname: 192.168.207.128 # 修改为实际IPhttp:port: 8080 # 避免端口冲突# https: # 生产环境建议启用# port: 443# certificate: /path/to/cert.pem# private_key: /path/to/key.pemharbor_admin_password: Harbor12345 # 修改默认密码data_volume: /data/harbor # 自定义存储路径
执行安装命令:
./install.sh --with-trivy # 包含漏洞扫描组件
三、生产环境优化配置
3.1 存储策略优化
- 镜像存储:建议使用独立磁盘分区(如/dev/sdb1挂载至/data/harbor)
- 数据库配置:生产环境建议外接MySQL/PostgreSQL
- 日志管理:配置日志轮转(/etc/logrotate.d/harbor)
3.2 安全加固方案
# 防火墙配置sudo firewall-cmd --zone=public --add-port=8080/tcp --permanentsudo firewall-cmd --reload# 访问控制vim /opt/harbor/common/config/registry/config.yml# 添加IP白名单限制auth:token:realm: <harbor-url>/service/tokenservice: harbor-registryissuer: harbor-token-issuerrootcertbundle: /etc/registry/root.crtwhitelist: ["192.168.1.0/24","10.0.0.0/8"] # 示例白名单
3.3 高可用部署
- 主备模式:使用Keepalived+VIP实现浮动IP
- 负载均衡:Nginx反向代理配置(示例):
```nginx
upstream harbor {
server harbor-node1:8080;
server harbor-node2:8080;
}
server {
listen 80;
server_name registry.example.com;
location / {
proxy_pass http://harbor;
proxy_set_header Host $host;
}
}
四、日常使用与维护4.1 镜像操作流程```bash# 登录仓库(生产环境建议使用服务账号)docker login 192.168.207.128:8080 -u admin -p Harbor12345# 镜像标记规范docker tag nginx:latest 192.168.207.128:8080/library/nginx:1.23# 推送镜像docker push 192.168.207.128:8080/library/nginx:1.23# 拉取镜像docker pull 192.168.207.128:8080/library/nginx:1.23
4.2 仓库管理操作
- 项目创建:通过Web界面或API创建独立命名空间
- 成员管理:RBAC权限模型配置(管理员/开发者/访客)
- 复制策略:跨项目/跨仓库镜像同步配置
- 垃圾回收:定期执行清理无效镜像层
# 执行垃圾回收(需停止相关服务)docker-compose down./prepare --with-trivysudo ./install.sh --with-trivy --only gc
4.3 监控告警配置
- 集成Prometheus:通过Harbor官方Exporter暴露指标
- 日志分析:ELK栈收集访问日志
- 告警规则示例:
- 存储空间使用率>80%
- 认证失败次数>5次/分钟
- 镜像推送失败率>10%
五、故障排查指南
5.1 常见问题处理
| 现象 | 可能原因 | 解决方案 |
|———|—————|—————|
| 502 Bad Gateway | Nginx配置错误 | 检查proxy_pass配置 |
| 401 Unauthorized | 认证信息错误 | 验证token有效性 |
| 500 Internal Error | 数据库连接失败 | 检查MySQL服务状态 |
| 镜像推送超时 | 网络带宽不足 | 调整registry存储配置 |
5.2 日志分析路径
- Nginx访问日志:/var/log/nginx/access.log
- Core服务日志:/var/log/harbor/core.log
- Registry日志:/var/log/registry/registry.log
- Jobservice日志:/var/log/harbor/jobservice.log
通过本文的完整实施方案,企业可构建符合生产标准的私有镜像仓库,实现镜像全生命周期管理。建议结合CI/CD流水线实现镜像自动构建-扫描-推送流程,配合容器平台实现镜像自动部署,形成完整的容器化应用交付体系。