如何将多架构的Docker镜像从本地注册表导出为.tar文件

46次阅读
没有评论

问题描述

在使用docker构建多架构镜像并推送到本地注册表后,希望将这个多架构镜像导出为.tar文件,以便将来使用docker load命令加载。然而,用户无法找到导出多架构镜像的方法。

解决方案

请注意以下操作注意版本差异及修改前做好备份。

方案1

根据Docker官方博客上关于多平台Docker构建的文章,你可以通过以下步骤实现导出多架构镜像为.tar文件:
1. 针对每个平台进行构建和推送。例如,对于amd64平台,执行以下命令:

docker buildx build --platform linux/amd64 --push -t localhost:5000/myimage:amd64 .
  1. 针对每个平台进行构建和推送。例如,对于arm64平台,执行以下命令:
docker buildx build --platform linux/arm64 --push -t localhost:5000/myimage:arm64 .
  1. 创建一个manifest文件并推送。执行以下命令:
docker manifest create myimage:latest localhost:5000/myimage:amd64 localhost:5000/myimage:arm64
docker manifest push localhost:5000/myimage:latest
  1. 导出多架构镜像为.tar文件。执行以下命令:
docker image save -o myimage.tar localhost:5000/myimage:latest

方案2

这个方案可能需要使用不同的工具或脚本,并且需要确保在客户端上保留镜像的manifest,并将其推送到另一个注册表。你可以尝试使用镜像的registry-to-registry推送功能。
以下是一个示例的registry-to-registry推送命令:

docker pull localhost:5000/myimage:latest
docker tag localhost:5000/myimage:latest new-registry:5000/myimage:latest
docker push new-registry:5000/myimage:latest

在这个示例中,我们首先使用docker pull命令从本地注册表拉取镜像。然后,使用docker tag命令将镜像重新标记为目标注册表的地址。最后,使用docker push命令将镜像推送到目标注册表。
请注意,这个方案可能需要根据你的具体情况进行调整,并且需要确保目标注册表的访问权限和配置正确。

正文完