一、环境准备与前提条件
1.1 服务器环境要求
- 操作系统:推荐CentOS 7/8或Ubuntu 20.04 LTS,需支持Docker和Harbor运行。
- 硬件配置:至少4核CPU、8GB内存、50GB存储空间(根据镜像规模调整)。
- 网络要求:确保服务器有公网IP或内网可访问,开放80(HTTP)、443(HTTPS)、22(SSH)端口。
- 依赖工具:安装Docker CE(版本≥19.03)、Docker Compose(Harbor依赖)、wget/curl。
1.2 安装Docker CE
以CentOS 7为例,执行以下命令:
# 卸载旧版本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 CEsudo yum install -y docker-ce docker-ce-cli containerd.io# 启动并设置开机自启sudo systemctl enable --now docker
验证安装:
sudo docker run hello-world
二、Harbor私有仓库安装与配置
2.1 下载Harbor安装包
访问Harbor官方GitHub仓库(https://github.com/goharbor/harbor/releases),选择最新稳定版(如v2.6.0),下载离线安装包:
wget https://github.com/goharbor/harbor/releases/download/v2.6.0/harbor-offline-installer-v2.6.0.tgztar -xzf harbor-offline-installer-v2.6.0.tgzcd harbor
2.2 配置Harbor
编辑harbor.yml文件,关键配置项如下:
hostname: registry.example.com # 替换为实际域名或IPhttp:port: 80https:certificate: /path/to/cert.pem # HTTPS证书路径(可选)private_key: /path/to/key.pemharbor_admin_password: Harbor12345 # 初始管理员密码database:password: root123 # 数据库密码storage_driver:name: filesystem # 存储驱动(支持filesystem/s3/swift等)fs_driver:rootdirectory: /data # 镜像存储路径
配置说明:
- hostname:必须为可解析的域名或IP,若使用HTTPS需配置证书。
- storage_driver:生产环境建议使用对象存储(如S3)以提高可靠性。
- password:强密码策略,避免使用默认值。
2.3 安装Harbor
执行安装脚本,自动完成依赖安装、数据库初始化等操作:
sudo ./install.sh
安装完成后,访问http://hostname(如http://registry.example.com),使用默认账号admin和配置的密码登录。
三、Harbor高级配置与优化
3.1 启用HTTPS
- 生成证书(以自签名证书为例):
openssl req -x509 -nodes -days 365 -newkey rsa:2048 \-keyout /data/cert/harbor.key -out /data/cert/harbor.crt \-subj "/CN=registry.example.com"
- 修改
harbor.yml:https:port: 443certificate: /data/cert/harbor.crtprivate_key: /data/cert/harbor.key
- 重启Harbor:
docker-compose down -vdocker-compose up -d
3.2 配置用户与项目
- 创建用户:在Harbor Web界面“用户管理”中添加用户,分配角色(如开发者、管理员)。
- 创建项目:在“项目”页面新建项目(如
myapp),设置访问权限(公开/私有)。 - 配置复制策略(可选):实现多仓库间镜像同步,提高可用性。
四、镜像推送与拉取实战
4.1 登录Harbor仓库
docker login registry.example.com
输入用户名和密码,验证登录成功。
4.2 标记并推送镜像
- 标记本地镜像:
docker tag nginx:latest registry.example.com/myapp/nginx:v1
- 推送镜像:
docker push registry.example.com/myapp/nginx:v1
常见问题:
- 权限拒绝:检查项目权限和用户角色。
- 证书错误:若使用自签名证书,需在Docker客户端配置
insecure-registries(仅测试环境)。
4.3 从Harbor拉取镜像
docker pull registry.example.com/myapp/nginx:v1
五、运维与监控
5.1 日志管理
Harbor日志位于/var/log/harbor,关键日志文件:
core.log:核心服务日志。registry.log:镜像存储日志。database.log:数据库操作日志。
5.2 备份与恢复
- 备份数据:
# 备份数据库docker exec -it harbor-db pg_dump -U postgres -F c registry > /backup/registry.dump# 备份配置文件cp -r /etc/harbor /backup/
- 恢复数据:
# 恢复数据库docker exec -i harbor-db pg_restore -U postgres -d registry -c /backup/registry.dump
5.3 性能监控
- Prometheus集成:Harbor内置Prometheus端点(
/metrics),可接入Grafana监控。 - 资源限制:通过
docker-compose.yml调整容器资源限制(CPU/内存)。
六、安全最佳实践
- 定期更新:关注Harbor和Docker安全公告,及时升级版本。
- 网络隔离:限制Harbor访问IP范围,使用防火墙规则。
- 镜像扫描:启用Harbor的Clair镜像扫描功能,检测漏洞。
- 审计日志:记录所有用户操作,便于追溯。
七、总结与扩展
本文详细介绍了Docker+Harbor私有仓库的搭建流程,从环境准备到镜像推送全覆盖。通过Harbor,企业可实现镜像的集中管理、权限控制和安全审计,提升DevOps效率。下一步建议:
- 结合CI/CD工具(如Jenkins)实现自动化镜像构建与推送。
- 探索Harbor的API接口,开发定制化运维工具。
- 在多节点环境下部署Harbor高可用集群。
通过实践,读者可快速掌握企业级私有仓库的搭建与运维技能,为容器化应用部署奠定坚实基础。