是否可以通过管道构建多架构docker镜像

问题描述 投票:0回答:1

我正在尝试在 DevOps 管道中创建一个支持 amd64 和 arm64 的映像,但出现此错误:

错误:docker 驱动程序不支持多平台构建。 切换到不同的驱动程序,或打开containerd镜像存储,然后重试

这就是我尝试做的事情:

  - 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 multi-arch image'
    inputs:
      command: build
      containerRegistry: 'acrName'
      repository: ${{ parameters.repository }}
      tags: |
        ${{ parameters.imageTag }}
      Dockerfile: ${{ parameters.dockerfile }}  
      buildContext: ${{ parameters.context }}
      arguments: '--platform linux/amd64,linux/arm64'

  - task: Docker@2
    displayName: 'Push multi-arch image to ACR'
    inputs:
      command: push
      containerRegistry: 'acrName'
      repository: ${{ parameters.repository }}
      tags: |
        ${{ parameters.imageTag }}
azure-devops yaml azure-pipelines-yaml docker-registry buildx
1个回答
0
投票

我可以使用您的 yaml 示例重现相同的错误。

enter image description here

Buildx 是一个

experimental feature
,允许您为多种架构构建镜像。需要在 Docker 中启用实验性功能。

您可以在yaml中添加

variable
,它会自动映射为环境。

variables:
  DOCKER_CLI_EXPERIMENTAL: 'true'

另外,任务

Docker@2
使用的是
docker build ...
命令,而不是
docker buildx build...
命令,因此,请删除该任务,直接使用命令。

- powershell: docker buildx build --platform linux/amd64,linux/arm64 -t myimage:latest .

我这边的管道结果:

enter image description here

然后您可以推送到 ACR

详情请参阅以下链接这里这里

© www.soinside.com 2019 - 2024. All rights reserved.