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

如何在DevOps流水线构建多架构Docker镜像?遇驱动报错求解

解决Docker多架构构建报错:Multi-platform build is not supported for the docker driver

错误原因

你遇到的错误是因为默认Docker驱动不支持多平台镜像构建,尽管你已经创建了支持多平台的buildx builder,但Docker@2任务默认仍使用原生docker驱动执行构建,未调用buildx。

解决方案

通过以下调整,让流水线正确使用buildx完成多架构镜像的构建与推送:

修改后的完整流水线配置

- task: DockerInstaller@0
  displayName: 'Install Docker'
  inputs:
    dockerVersion: '27.0.3'

- task: PowerShell@2
  displayName: 'Set up Docker Buildx and QEMU'
  inputs:
    targetType: 'inline'
    script: |
      docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
      docker buildx create --name mybuilder --driver docker-container --use
      docker buildx inspect --bootstrap

- task: Docker@2
  displayName: 'Build and Push multi-arch image'
  inputs:
    command: 'buildAndPush'
    containerRegistry: 'acrName'
    repository: ${{ parameters.repository }}
    tags: |
      ${{ parameters.imageTag }}
    Dockerfile: ${{ parameters.dockerfile }}  
    buildContext: ${{ parameters.context }}
    arguments: '--platform linux/amd64,linux/arm64 --builder mybuilder'
    useBuildKit: true

关键修改说明

  • 合并构建推送步骤:使用buildAndPush命令替代拆分的build和push,buildx支持一次性完成构建并推送,避免分步操作的兼容性问题
  • 启用BuildKit:添加useBuildKit: true强制启用BuildKit,确保构建过程调用buildx
  • 指定buildx builder:在arguments中添加--builder mybuilder,明确使用提前创建的支持多平台的builder实例
  • 保留架构参数:继续通过--platform指定目标架构linux/amd64,linux/arm64

额外注意事项

  • 确保流水线代理拥有足够权限:QEMU初始化需要特权模式,托管代理建议选择Ubuntu系列
  • 可在PowerShell步骤后添加docker buildx ls命令,验证mybuilder是否处于活跃状态

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 15:53:19