我正在尝试在 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 }}
我可以使用您的 yaml 示例重现相同的错误。
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 .
我这边的管道结果:
然后您可以推送到 ACR。