离线Harbor服务器复制/data/registry目录后镜像不显示问题排查
Harbor离线镜像迁移问题解答
直接复制/data/registry目录不可行的原因
Harbor的镜像管理依赖两个核心部分:
- 镜像的实际二进制存储:存放于
/data/registry - 镜像的元数据(归属项目、标签、权限配置等):存储在Harbor内置的PostgreSQL数据库中
你只复制了镜像存储文件,但目标Harbor的数据库里没有这些镜像的元数据记录,所以GUI界面无法识别并展示对应的仓库。
若坚持用文件复制方式,需补充的步骤
- 先停止本地和目标Harbor的所有服务:
docker-compose down - 复制本地Harbor的PostgreSQL数据库目录(默认路径为
/data/database)到目标Harbor的对应目录下 - 必须保证本地与目标Harbor的版本完全一致,否则数据库结构差异会导致服务启动失败或数据异常
- 启动目标Harbor服务:
docker-compose up -d
更可靠的离线迁移方案
直接复制目录容易因版本、权限等问题引发故障,推荐采用镜像导出-导入的标准流程:
- 本地Harbor导出镜像:
docker save 本地Harbor地址/项目名/镜像名:标签 -o 镜像文件名.tar - 通过离线介质(如U盘)将tar包传输到目标服务器
- 目标服务器加载镜像:
docker load -i 镜像文件名.tar - 给镜像打上目标Harbor的标签:
docker tag 本地Harbor地址/项目名/镜像名:标签 目标Harbor地址/项目名/镜像名:标签 - 登录目标Harbor并推送镜像:
docker login 目标Harbor地址 docker push 目标Harbor地址/项目名/镜像名:标签
如果镜像数量较多,可以编写shell脚本批量执行上述操作,提升效率。
内容的提问来源于stack exchange,提问作者Patrik Falck
相关产品推荐
相关产品推荐

