阿里云下载的 kafka.tar 推送到私有镜像仓库
下面按“一台离线 Linux 服务器,把阿里云下载的 kafka.tar 推送到你们私有镜像仓库”给出最短可行步骤。
命令默认使用 Docker CLI;若你用 Podman/nerdctl,换成等价命令即可。
──────────────────────────────
1、前提检查
──────────────────────────────
- 服务器已装 Docker ≥ 19.03
- 能访问目标仓库 (如 harbor.company.internal)
- 若仓库走自签证书或 HTTP,需要在 /etc/docker/daemon.json 配置
然后 systemctl restart docker{ "insecure-registries": ["harbor.company.internal"] }
──────────────────────────────
步骤一:把镜像 tar 传到服务器
──────────────────────────────
scp kafka_3.5.1.tar user@server:/tmp/
# 或 U 盘 / curl 均可
──────────────────────────────
步骤二:docker load 导入本地
──────────────────────────────
docker load -i /tmp/kafka_3.5.1.tar
输出类似
Loaded image: registry.cn-hangzhou.aliyuncs.com/acs/kafka:3.5.1
确认
docker images | grep kafka
──────────────────────────────
步骤三:给镜像打上目标仓库的 tag
──────────────────────────────
假设要推到 harbor.company.internal/infra/kafka:3.5.1
docker tag registry.cn-hangzhou.aliyuncs.com/acs/kafka:3.5.1 \
harbor.company.internal/infra/kafka:3.5.1
如果 docker load 输出的是 <none>
标签,也可以直接用 IMAGE_ID:
docker tag 1a2b3c4d5e harbor.company.internal/infra/kafka:3.5.1
──────────────────────────────
步骤四:登录仓库
──────────────────────────────
docker login harbor.company.internal
# 输入用户名 / 密码或 token
──────────────────────────────
步骤五:推送
──────────────────────────────
docker push harbor.company.internal/infra/kafka:3.5.1
看到各 layer 的 PUSHED 即成功。
──────────────────────────────
一个命令完成(可选)
──────────────────────────────
不想在本机落地镜像引擎,可用 skopeo:
skopeo copy \
oci-archive:/tmp/kafka_3.5.1.tar \
docker://harbor.company.internal/infra/kafka:3.5.1
skopeo 会自动把 tar 解包成分层并按 OCI API 上传,省去 load+tag。
──────────────────────────────
常见问题
──────────────────────────────
• 报错 “received unexpected HTTP status: 500”
→ 仓库项目没权限 / 空间不足;检查 Harbor 项目配额或账号角色。
• 报错 “x509: certificate signed by unknown authority”
→ Harbor 用自签 HTTPS,需把 CA 证书放到 /etc/docker/certs.d/harbor.company.internal/ca.crt 并重启 Docker。
• 要推多标签
for tag in 3.5.1 latest; do
docker tag registry.cn-hangzhou.aliyuncs.com/acs/kafka:3.5.1 \
harbor.company.internal/infra/kafka:$tag
docker push harbor.company.internal/infra/kafka:$tag
done
──────────────────────────────
一句话
──────────────────────────────
“load → tag → login → push”是离线 tar 镜像进入任何 registry 的标准四步;
不接受直接上传整个 tar 包的仓库,务必先让 Docker/Skopeo 把它拆成层再上传。