一、技术方案适用场景
本方案专为以下场景设计:
- 企业内网环境:通过离线包实现Harbor仓库的无外网部署
- 镜像安全管控:构建带RBAC权限控制的私有镜像仓库
- 开发测试隔离:为不同项目组分配独立命名空间
- CI/CD集成:与Jenkins等工具链实现镜像自动推送
- 混合云架构:作为多云环境的镜像同步中枢
系统要求:Ubuntu 64位系统(推荐20.04 LTS),内存≥4GB(生产环境建议8GB+),磁盘空间≥200GB(根据镜像存储量调整)。
二、基础环境准备
2.1 系统权限配置
# 创建专用运维用户(推荐)sudo useradd -m -s /bin/bash harbor-adminsudo usermod -aG sudo harbor-admin# 切换至专用用户执行后续操作(可选)su - harbor-admin
2.2 网络环境检测
# 验证关键端口可用性sudo netstat -tulnp | grep -E '80|443|2375|2376'# 测试DNS解析(确保能访问Docker Hub)dig registry-1.docker.io
2.3 依赖组件安装
# 安装基础工具链sudo apt updatesudo apt install -y \apt-transport-https \ca-certificates \curl \gnupg-agent \software-properties-common \conntrack \socat \ebtables \ipset
三、Docker引擎优化部署
3.1 镜像源加速配置
# 添加国内镜像源(示例使用通用镜像站)curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpgecho \"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null# 配置多镜像加速器sudo mkdir -p /etc/dockercat <<EOF | sudo tee /etc/docker/daemon.json{"registry-mirrors": ["https://<通用镜像加速器1>","https://<通用镜像加速器2>","https://registry-1.docker.io"],"max-concurrent-downloads": 10,"log-driver": "json-file","log-opts": {"max-size": "100m","max-file": "3"}}EOF
3.2 生产级配置优化
# 配置存储驱动(根据需求选择overlay2或devicemapper)sudo sed -i 's/^# StorageDriver=/StorageDriver=overlay2/' /etc/docker/daemon.json# 配置TCP监听(谨慎使用,建议配合TLS)# echo '{"hosts": ["unix:///var/run/docker.sock", "tcp://0.0.0.0:2375"]}' | sudo tee /etc/docker/daemon.json# 应用配置并验证sudo systemctl daemon-reloadsudo systemctl restart dockersudo docker info | grep -i "storage driver\|registry mirrors"
四、Harbor仓库搭建
4.1 离线包准备
- 从开源社区获取最新稳定版Harbor离线包(建议v2.5+)
- 验证包完整性:
# 示例验证命令(实际文件名需替换)sha256sum harbor-offline-installer-v2.5.3.tgz | grep <官方校验值>
4.2 安装前配置
# 解压安装包tar xvf harbor-offline-installer-*.tgz -C /optcd /opt/harbor# 生成自签名证书(生产环境建议使用CA证书)sudo mkdir -p /data/certsudo openssl req -newkey rsa:4096 -nodes -sha256 -keyout /data/cert/domain.key \-x509 -days 3650 -out /data/cert/domain.crt \-subj "/C=CN/ST=Beijing/L=Beijing/O=DevOps/CN=harbor.example.com"
4.3 配置文件定制
# harbor.yml 关键配置示例hostname: harbor.example.comhttp:port: 8081https:port: 443certificate: /data/cert/domain.crtprivate_key: /data/cert/domain.keyharbor_admin_password: Harbor12345database:password: root123max_idle_conns: 50max_open_conns: 100data_volume: /data/harbortrivy:ignore_unfixed: trueskip_update: true
4.4 安装执行
# 安装依赖组件sudo ./preparesudo apt install -y docker-compose# 启动安装(添加--with-trivy启用漏洞扫描)sudo ./install.sh --with-notary --with-trivy# 验证服务状态sudo docker-compose ps
五、核心操作实践
5.1 镜像推送/拉取
# 登录仓库(使用配置的admin密码)docker login harbor.example.com:8081# 标记并推送镜像docker tag nginx:latest harbor.example.com:8081/library/nginx:v1docker push harbor.example.com:8081/library/nginx:v1# 从私有仓库拉取docker pull harbor.example.com:8081/library/nginx:v1
5.2 仓库管理命令
# 使用Harbor CLI工具(需自行开发或使用REST API)# 示例:查询项目列表curl -u "admin:Harbor12345" -X GET "https://harbor.example.com/api/v2.0/projects" -k# 垃圾回收(清理未使用的镜像层)sudo docker-compose exec -it harbor-core bash/harbor/garbage_collection.sh
六、生产环境建议
-
高可用方案:
- 数据库使用外部MySQL集群
- 配置共享存储(NFS/对象存储)
- 使用Keepalived实现VIP切换
-
安全加固:
- 启用LDAP/OAuth集成
- 配置网络策略限制访问源
- 定期更新Trivy漏洞库
-
监控告警:
- 集成Prometheus监控指标
- 配置镜像扫描失败告警
- 设置存储空间阈值告警
七、常见问题处理
| 问题现象 | 解决方案 |
|---|---|
| 502 Bad Gateway | 检查Nginx日志,通常为后端服务未启动 |
| 证书验证失败 | 确保客户端信任自签名证书或配置正确CA |
| 推送镜像超时 | 检查存储空间及网络带宽 |
| 漏洞扫描失败 | 更新Trivy数据库或调整扫描配置 |
本方案通过标准化流程和配置模板,帮助开发者在Linux环境下快速构建企业级私有Docker仓库。实际部署时需根据具体网络环境和安全要求调整配置参数,建议先在测试环境验证完整流程后再投入生产使用。