Я пытаюсь создать один образ, поддерживающий amd64 и Arm64, в моем конвейере DevOps, но получаю эту ошибку:
ОШИБКА: многоплатформенная сборка не поддерживается драйвером докера. Переключитесь на другой драйвер или включите хранилище образов контейнера и повторите попытку.
Вот как я пытаюсь это сделать:
- 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.
Вы можете добавить variable
в yaml, который автоматически будет отображаться как среда.
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.
Пожалуйста, перейдите по ссылкам ниже здесь и здесь для получения подробной информации:
Это помогло: мне нужно было использовать вход в Docker, прежде чем я пытался создать и отправить свой ACR. Спасибо!