You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何推送多平台OCI镜像tar包并在本地linux/amd64使用?

解决OCI镜像tar包的推送与本地使用问题

你通过docker buildx build生成了兼容linux/amd64和linux/arm64的OCI格式镜像tar包,但Docker原生的--load/--push无法直接处理这类tar包,下面针对你的两个问题给出具体解决办法:

1. 推送OCI镜像tar包到镜像仓库

推荐使用skopeo或crane工具完成推送,具体步骤如下:

用skopeo推送

直接将OCI tar包中的镜像复制到远程仓库(替换成你的仓库地址和镜像标签):

# 先登录仓库(如果需要认证)
skopeo login your-registry.example.com
# 推送镜像
skopeo copy oci-archive:/some/path docker://your-registry.example.com/submariner-operator:v1.0

这个命令会自动处理tar包中的多平台镜像层,无需额外操作。

用crane推送

  1. 先将OCI tar包加载到本地镜像存储:
crane load -i /some/path your-registry.example.com/submariner-operator:v1.0
  1. 再推送到远程仓库:
# 先登录仓库(如果需要认证)
crane login your-registry.example.com
# 推送镜像
crane push your-registry.example.com/submariner-operator:v1.0

2. 在linux/amd64机器上直接使用该镜像

借助skopeo或crane将OCI镜像导入Docker本地存储,之后就能用Docker命令正常操作:

用skopeo导入到Docker

skopeo copy oci-archive:/some/path docker-daemon:submariner-operator:v1.0

导入完成后,直接运行镜像:

docker run submariner-operator:v1.0

Docker会自动匹配linux/amd64平台的镜像层。

用crane导入到Docker

crane load -i /some/path submariner-operator:v1.0

导入后同样可以用docker run、docker inspect等命令操作该镜像。

关于docker import/docker load报错的原因

  • docker import是用于导入容器快照(而非完整镜像),不会保留镜像的元数据(如ENTRYPOINT、CMD),所以会提示找不到可执行文件。
  • docker load仅支持Docker原生格式的镜像tar包(由docker save生成),不兼容OCI格式,因此会出现blob文件找不到的错误。

内容的提问来源于stack exchange,提问作者tuna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 09:15:49