我给你整理成最干净、可直接执行、从 A 仓库 → B 仓库完整迁移镜像的一套命令,分源机器(上传)目标机器(导入+推送),一步不乱。

一、源机器(有镜像的机器)

# 1. 拉取原始镜像
docker pull harbor/myImage:0.1.0

# 2. 打新标签(指向新仓库)
docker tag harbor/myImage:0.1.0 harborNew/myImage:0.1.0

# 3. 导出并压缩
docker save harborNew/myImage:0.1.0 | gzip > /root/ssh.tar.gz

# 4. 传到目标机器
scp -o StrictHostKeyChecking=no /root/ssh.tar.gz root@127.0.0.1:/root/

二、目标机器(127.0.0.1,导入 + 推送到 B 仓库)

# 1. 解压并导入到 containerd (k8s 使用)
gzip -c -d /root/ssh.tar.gz | ctr -n k8s.io images import --compress-blobs -

# 2. 推送到新镜像仓库 B
ctr -n k8s.io images push --hosts-dir /etc/containerd/certs.d/ harborNew/myImage:0.1.0

✅ 最终效果

镜像完整从:
harbor/myImage:0.1.0
迁移到:
harborNew/myImage:0.1.0


超简版(你记这 6 行就行)

docker pull harbor/myImage:0.1.0
docker tag harbor/myImage:0.1.0 harborNew/myImage:0.1.0
docker save ... | gzip > ssh.tar.gz
scp ssh.tar.gz root@127.0.0.1:/root/

目标

gzip -d ssh.tar.gz | ctr -n k8s.io images import -
ctr -n k8s.io images push ... harborNew/myImage:0.1.0

更多推荐