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

docker buildx如何使用不同Dockerfile或按平台切换生成统一manifest

Docker Buildx 生成统一manifest操作指南

方案1:单Dockerfile自动适配平台(优先推荐)

无需维护两份Dockerfile,可通过buildx内置的架构变量自动切换下载地址,仅需将Dockerfile中的对应RUN指令修改为:

RUN curl -LO https://...${TARGETARCH}

${TARGETARCH}是buildx自动注入的内置变量,amd64平台构建时会自动替换为amd64,arm64平台构建时自动替换为arm64,无需额外传参。
直接执行以下命令即可完成多平台构建并自动生成统一manifest:

  • 先创建支持多架构的buildx构建器(仅首次需要执行):
    docker buildx create --name multiarch-builder --use
    docker buildx inspect multiarch-builder --bootstrap
    
    执行后查看输出的Platforms字段,确认包含linux/amd64、linux/arm64即可。
  • 执行多平台构建并推送:
    docker buildx build --platform linux/amd64,linux/arm64 -t 你的镜像仓库地址/镜像名:标签 --push .
    
    执行完成后,buildx会自动完成两个架构的独立构建、生成统一manifest列表并推送到镜像仓库,用户拉取镜像时会自动匹配当前设备的架构。

方案2:双Dockerfile手动合并manifest

如果你需要保留两个独立的Dockerfile(分别为Dockerfile.amd64、Dockerfile.arm64),可按以下步骤操作:

  • 分别构建两个架构的镜像并推送到镜像仓库:
    # 构建amd64版本
    docker buildx build --platform linux/amd64 -f Dockerfile.amd64 -t 你的镜像仓库地址/镜像名:amd64 --push .
    # 构建arm64版本
    docker buildx build --platform linux/arm64 -f Dockerfile.arm64 -t 你的镜像仓库地址/镜像名:arm64 --push .
    
  • 手动创建统一manifest列表:
    docker buildx imagetools create -t 你的镜像仓库地址/镜像名:标签 你的镜像仓库地址/镜像名:amd64 你的镜像仓库地址/镜像名:arm64
    
  • 验证manifest正确性:
    docker buildx imagetools inspect 你的镜像仓库地址/镜像名:标签
    
    输出中能同时看到amd64、arm64两个架构的镜像信息即为配置成功。

注意:manifest列表仅支持存储在镜像仓库中,所有涉及的镜像必须先推送到Docker Hub、私有镜像仓库等远端仓库,本地存储不支持直接保存manifest列表。

内容的提问来源于stack exchange,提问作者Chris G.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 05:15:00