如何构建应用多架构容器镜像?

参与5

2同行回答

ccww552010ccww552010课题专家组软件开发工程师某科技企业
 一、安装docker并开启实验特性cat >> /etc/docker/daemon.json << EOF{"experimental": true}EOFsystemctl daemon-reloadsystemctl restart docker注:1. Docker 19.03+ 版本中可以使用 docker buildx build 命令使用 BuildKit 构建镜像。2. linux系统实...显示全部

 一、安装docker并开启实验特性

cat >> /etc/docker/daemon.json << EOF
{
"experimental": true
}
EOF
systemctl daemon-reload
systemctl restart docker
注:
1. Docker 19.03+ 版本中可以使用 docker buildx build 命令使用 BuildKit 构建镜像。
2. linux系统实验特性模式是关闭的,需要打开,才能支持buildx。

 二、 开启 binfmt_misc 来运行非本地架构的 Docker 镜像

如果使用的是 Mac 或者 Windows 版本 Docker 桌面版,则可以跳过这个步骤,因为 binfmt_misc 默认开启。如果使用的是其它平台(linux),可使用 tonistiigi/binfmt 镜像进行安装:
docker run --privileged --rm tonistiigi/binfmt --install all

#  三、创建多架构构建器
默认情况下,Docker 会使用默认构建器,是不支持多架构构建。为了构建多架构的镜像,需要创建新的支持多架构的构建器,需执行 docker buildx create --use
docker buildx create --use --name mybuilder

 四、 构建多架构镜像

docker buildx build -t --platform=linux/arm64,linux/amd64 . --push,构建一个支持 arm64 和 amd64 架构的多架构镜像,并推送至 Docker Hub。

 五、 使用 manifest创建多架构镜像

如果本地已经有不同架构的镜像,则使用manifest创建并推送多架构镜像:

基于多架构镜像,生成统一镜像目录名
docker manifest create \
<repo>:<tag> <repo1>:<tag1>  <repo2>:<tag2>

// 推送统一镜像目录名manifest
docker manifest push <repo>:<tag>

  六、查看多架构镜像的manifest

docker manifest inspect <repo>:<tag>

收起
互联网服务 · 2023-01-01
浏览473
leo1234leo1234it技术咨询顾问某金融IT公司
docker manifest功能了解一下,就是你的需求显示全部

docker manifest功能了解一下,就是你的需求

收起
IT咨询服务 · 2022-10-26
浏览543

问题来自

相关问题

相关资料

相关文章

问题状态

  • 发布时间:2022-10-26
  • 关注会员:3 人
  • 问题浏览:1032
  • 最近回答:2023-01-01
  • X社区推广