Docker Registry镜像迁移至Harbor仓库完整指南
前言
在企业级容器化环境中,镜像仓库的迁移和同步是常见的运维操作。本文将详细介绍如何将Docker Registry中的镜像迁移到功能更强大的Harbor仓库,并建立跨节点的镜像复制规则。Harbor作为企业级Docker Registry服务,提供了镜像复制、漏洞扫描、用户管理等高级功能,非常适合生产环境使用。
一、准备测试镜像
首先我们需要在原有的Docker Registry中准备测试镜像:
# 标记本地镜像并推送到旧Registry
docker tag linux92-games:motuo-v0.1 10.0.0.101:5000/oldboyedu-games/motuo:v0.1
docker push 10.0.0.101:5000/oldboyedu-games/motuo:v0.1
docker tag linux92-games:doudizhu-v0.1 10.0.0.101:5000/oldboyedu-games/doudizhu:v0.1
docker push 10.0.0.101:5000/oldboyedu-games/doudizhu:v0.1
# 推送数据库镜像
docker push 10.0.0.101:5000/oldboyedu-db/mysql:8.3.0-oracle
二、验证Registry中的镜像
通过访问Registry的API端点验证镜像是否推送成功:
http://10.0.0.101:5000/v2/_catalog
此API会返回Registry中所有仓库的列表,确保我们推送的镜像已正确存储。
三、Harbor仓库部署
3.1 在101节点安装Harbor
- 传输安装包:
scp harbor-offline-installer-v2.7.4.tgz 10.0.0.101:~
- 解压安装包:
tar xf harbor-offline-installer-v2.7.4.tgz -C /oldboyedu/softwares/
- 准备配置文件:
cd /oldboyedu/softwares/harbor/
cp harbor.yml{.tmpl,}
- 修改Harbor配置(关键配置):
hostname: 10.0.0.101 # 使用IP或域名
harbor_admin_password: 1 # 设置管理员密码
data_volume: /oldboyedu/data/harbor # 数据存储路径
- 安装Harbor(包含ChartMuseum支持):
./install.sh --with-chartmuseum
3.2 在102节点安装Harbor
在第二个节点重复上述安装步骤,建立多节点Harbor集群。
四、配置镜像复制规则
4.1 创建复制规则
- 登录Harbor Web界面(http://10.0.0.101)
- 进入"复制管理" → "新建复制规则"
- 配置源Registry信息:
- 名称:docker-registry-to-harbor
- 源Registry:10.0.0.101:5000
- 目标命名空间:oldboyedu-games(与源保持一致)
- 触发模式:手动(生产环境可设置为事件驱动)
4.2 客户端配置
为确保客户端能访问新旧仓库,需配置Docker守护进程:
# /etc/docker/daemon.json
{
"insecure-registries": [
"10.0.0.101:5000",
"harbor.oldboyedu.com",
"10.0.0.101"
]
}
systemctl restart docker
五、测试镜像复制
5.1 手动触发复制
- 在Harbor界面找到创建的复制规则
- 点击"立即复制"按钮触发同步
- 监控任务状态直至完成
5.2 验证镜像
在目标Harbor中验证镜像是否同步成功:
docker pull 10.0.0.101/oldboyedu-linux/linux92:v0.1
六、仓库权限管理
默认情况下,Harbor同步的镜像会被设置为私有项目。如需允许匿名拉取:
- 进入项目设置
- 将"访问级别"从"私有"改为"公开"
- 保存更改
七、生产环境建议
- HTTPS配置:生产环境务必配置HTTPS证书,提升安全性
- 存储后端:建议使用高可用存储(如Ceph、NFS)作为数据卷
- 备份策略:定期备份Harbor数据库和镜像数据
- 监控告警:配置Harbor健康检查和性能监控
- 资源配额:为不同项目设置存储配额,防止磁盘耗尽
常见问题排查
-
复制失败:
- 检查网络连通性
- 验证源Registry是否允许拉取
- 查看Harbor任务日志获取详细信息
-
拉取镜像失败:
- 确认客户端已配置insecure-registry
- 检查Harbor项目是否为公开或用户有访问权限
- 验证DNS解析是否正确
-
性能问题:
- 大镜像复制时可能超时,适当调整超时设置
- 网络带宽不足时考虑分批次迁移
结论
通过本文介绍的步骤,您可以顺利完成从Docker Registry到Harbor的镜像迁移,并建立可靠的镜像复制机制。Harbor提供的企业级功能将极大提升您的容器镜像管理能力,为CI/CD流水线提供稳定基础。
对于大规模生产环境,建议进一步研究Harbor的高可用部署、与Kubernetes的集成以及漏洞扫描等高级功能,构建更完善的容器安全体系。
浙公网安备 33010602011771号