我给你整理成最干净、可直接执行、从 A 仓库 → B 仓库完整迁移镜像的一套命令,分源机器(上传)和目标机器(导入+推送),一步不乱。
一、源机器(有镜像的机器)
# 1. 拉取原始镜像dockerpull harbor/myImage:0.1.0# 2. 打新标签(指向新仓库)dockertag harbor/myImage:0.1.0 harborNew/myImage:0.1.0# 3. 导出并压缩dockersave harborNew/myImage:0.1.0|gzip>/root/ssh.tar.gz# 4. 传到目标机器scp-oStrictHostKeyChecking=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-nk8s.io imagesimport--compress-blobs -# 2. 推送到新镜像仓库 Bctr-nk8s.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 行就行)
源
dockerpull harbor/myImage:0.1.0dockertag harbor/myImage:0.1.0 harborNew/myImage:0.1.0dockersave...|gzip>ssh.tar.gzscpssh.tar.gz root@127.0.0.1:/root/目标
gzip-dssh.tar.gz|ctr-nk8s.io imagesimport- ctr-nk8s.io images push... harborNew/myImage:0.1.0