手把手Docker+Harbor私有仓库搭建:从安装到推送全攻略
引言:为什么需要私有镜像仓库?
在容器化部署日益普及的今天,Docker已成为开发运维的标准工具。然而,公共镜像仓库(如Docker Hub)存在网络延迟、安全风险及配额限制等问题。对于企业级应用,搭建私有镜像仓库(如Harbor)成为保障效率与安全的关键选择。本文将通过“手把手”教学,从零开始完成Docker与Harbor的安装、配置及镜像推送全流程。
一、环境准备:基础条件与工具安装
1.1 服务器要求
- 操作系统:推荐CentOS 7/8或Ubuntu 20.04 LTS(需支持Docker)
- 硬件配置:至少4核CPU、8GB内存、50GB磁盘空间(根据镜像规模调整)
- 网络环境:需开放80(HTTP)、443(HTTPS)、22(SSH)端口,建议配置内网DNS解析
1.2 Docker安装
以CentOS为例:
# 卸载旧版本
sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
# 安装依赖
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# 添加Docker仓库
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 安装Docker CE
sudo yum install -y docker-ce docker-ce-cli containerd.io
# 启动服务
sudo systemctl enable --now docker
验证安装:
docker --version
docker run hello-world
二、Harbor安装与配置:私有仓库核心
2.1 Harbor下载与安装
- 下载Harbor(以v2.5.3为例): - wget https://github.com/goharbor/harbor/releases/download/v2.5.3/harbor-offline-installer-v2.5.3.tgz
- tar xvf harbor-offline-installer-v2.5.3.tgz
- cd harbor
 
- 修改配置文件: - cp harbor.yml.tmpl harbor.yml
- vi harbor.yml
 - 关键配置项: - hostname: harbor.example.com # 替换为实际域名或IP
- http:
- port: 80
- https:
- certificate: /data/cert/server.crt # 需提前准备SSL证书
- private_key: /data/cert/server.key
- harbor_admin_password: Harbor12345 # 初始管理员密码
- database:
- password: root123 # 数据库密码
 
- 执行安装: - sudo ./install.sh
 - 安装完成后,访问 - https://harbor.example.com,使用默认账号- admin和配置的密码登录。
2.2 Harbor核心功能配置
- 项目创建:在Web界面创建项目(如myapp),可设置公开/私有权限。
- 用户管理:添加普通用户并分配项目角色(如开发者、访客)。
- 复制策略:配置与其他Harbor实例或Docker Hub的镜像同步规则。
- 日志审计:通过/var/log/harbor/目录查看操作日志。
三、Docker与Harbor认证配置
3.1 登录Harbor仓库
docker login harbor.example.com
# 输入用户名和密码
3.2 配置Docker信任证书(HTTPS场景)
若Harbor使用自签名证书,需将CA证书添加到Docker信任列表:
sudo mkdir -p /etc/docker/certs.d/harbor.example.com
sudo cp /data/cert/server.crt /etc/docker/certs.d/harbor.example.com/ca.crt
sudo systemctl restart docker
四、镜像推送实战:从构建到上传
4.1 镜像构建与标记
- 构建镜像: - docker build -t myapp:v1 .
 
- 标记镜像(指定Harbor仓库): - docker tag myapp:v1 harbor.example.com/myapp/myapp:v1
 
4.2 推送镜像到Harbor
docker push harbor.example.com/myapp/myapp:v1
常见问题处理:
- 权限错误:检查docker login是否成功,确认用户有项目写入权限。
- 证书错误:重新配置Docker信任证书。
- 网络问题:检查防火墙规则是否放行443端口。
4.3 从Harbor拉取镜像
docker pull harbor.example.com/myapp/myapp:v1
五、高级功能与运维建议
5.1 自动化构建与CI/CD集成
- Jenkins集成:通过Pipeline脚本实现镜像构建、推送和部署自动化。- pipeline {
- agent any
- stages {
- stage('Build') {
- steps {
- sh 'docker build -t myapp:v1 .'
- sh 'docker tag myapp:v1 harbor.example.com/myapp/myapp:v1'
- }
- }
- stage('Push') {
- steps {
- withCredentials([usernamePassword(credentialsId: 'harbor-cred', usernameVariable: 'USER', passwordVariable: 'PASS')]) {
- sh 'docker login -u $USER -p $PASS harbor.example.com'
- sh 'docker push harbor.example.com/myapp/myapp:v1'
- }
- }
- }
- }
- }
 
5.2 镜像清理与存储优化
- 定期清理未使用的镜像:- # 在Harbor服务器执行
- docker run -it --name gc --rm --network host goharbor/harbor-gc:v2.5.3
 
- 设置存储配额:在Harbor Web界面的“系统管理”→“存储配额”中限制项目存储空间。
5.3 高可用部署方案
- 多节点Harbor集群:通过共享存储(如NFS)和数据库主从复制实现高可用。
- 负载均衡:使用Nginx或HAProxy分发请求到多个Harbor实例。
六、安全加固最佳实践
- 强制HTTPS:禁用HTTP访问,配置SSL证书并启用HSTS。
- 定期更新密码:每90天轮换管理员密码。
- 镜像扫描:启用Harbor内置的Clair扫描器,定期检查漏洞。
- 网络隔离:将Harbor部署在私有子网,仅允许特定IP访问管理界面。
总结:私有仓库的价值与未来
通过本文的“手把手”教学,读者已掌握从Docker基础安装到Harbor私有仓库搭建、认证配置及镜像推送的全流程。私有镜像仓库不仅能提升部署效率,更是保障企业代码安全的核心基础设施。随着容器技术的演进,Harbor的AI驱动扫描、多云镜像管理等高级功能将进一步释放价值。建议开发者定期关注Harbor官方文档(https://goharbor.io)更新,持续优化私有仓库运维体系。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权请联系我们,一经查实立即删除!