容器镜像迁移至 Harbor 私有仓库(OCI 格式)

步骤 1:导出 Docker 镜像为 OCI 格式
# 查看本地镜像列表
docker images

# 导出为 OCI 格式(需 Docker 20.10+)
docker save --format oci -o image.oci <镜像名>:<标签>

# 验证导出文件
file image.oci  # 应显示 "OCI Image"

步骤 2:准备 Harbor 访问凭证
# 创建认证配置文件
mkdir -p ~/.docker
echo '{"auths":{"<Harbor地址>":{"auth":"$(echo -n '<用户名>:<密码>' | base64)"}}}' > ~/.docker/config.json

步骤 3:导入 OCI 镜像到 Harbor
# 使用 skopeo 工具导入(推荐)
skopeo copy --dest-tls-verify=false \
  oci-archive:image.oci \
  docker://<Harbor地址>/<项目名>/<镜像名>:<标签>

# 或使用 Docker 客户端导入
docker load -i image.oci
docker tag <镜像ID> <Harbor地址>/<项目名>/<镜像名>:<标签>
docker push <Harbor地址>/<项目名>/<镜像名>:<标签>

步骤 4:验证 Harbor 仓库
  1. 登录 Harbor Web 控制台
  2. 进入目标项目
  3. 检查镜像是否存在
  4. 测试拉取镜像:
docker pull <Harbor地址>/<项目名>/<镜像名>:<标签>

关键参数说明
参数 示例值 说明
<镜像名>:<标签> nginx:1.23 源镜像标识
<Harbor地址> harbor.example.com Harbor 服务域名/IP
<项目名> my-project Harbor 中的项目名称
--dest-tls-verify=false 当使用自签名证书时需添加
注意事项
  1. 确保 Harbor 已启用 OCI 支持(默认开启)
  2. 若使用 HTTP 协议,需在 Docker 配置中添加 "insecure-registries": ["<Harbor地址>"]
  3. 镜像大小超过 2GB 时建议分块传输:
split -b 2000M image.oci image_part_

  1. 使用 skopeo inspect docker://<地址> 验证镜像元数据

通过此流程,可实现容器镜像的标准化迁移,确保镜像格式符合开放容器标准(OCI),增强跨平台兼容性。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐