GitHub Actions中Docker多架构镜像构建失败求助
解决GitHub Action中Docker多平台镜像构建推送至ACR失败问题
问题核心
在GitHub Action中执行多平台Docker镜像构建时,遇到错误:
ERROR: Multi-platform build is not supported for the docker driver.
Switch to a different driver, or turn on the containerd image store, and try again.
解决方案
问题根源是GitHub Actions Ubuntu runner默认的Buildx驱动为docker,该驱动不支持跨平台构建。需要在初始化Buildx时明确指定docker-container驱动——这是Buildx实现多平台构建的标准驱动。
修改Workflow中的Set up Docker Buildx步骤,添加驱动配置:
- name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 with: driver: docker-container driver-opts: | network=host
同时,建议将build-and-push步骤中的platforms参数与手动命令保持一致,改为linux/amd64,linux/arm64/v8,避免潜在的架构匹配问题。
修改后的完整Workflow
name: Build and Push Docker Image on: push: branches: - main jobs: build-and-push: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v3 - name: Set up QEMU uses: docker/setup-qemu-action@v3 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 with: driver: docker-container driver-opts: | network=host - name: Log in to Azure Container Registry uses: azure/docker-login@v1 with: login-server: project.azurecr.io username: ${{ secrets.ACR_USERNAME }} password: ${{ secrets.ACR_PASSWORD }} - name: Read version number id: get_version run: echo "VERSION_NUMBER=$(cat VERSION)" >> $GITHUB_ENV - name: Build and push uses: docker/build-push-action@v6 with: platforms: linux/amd64,linux/arm64/v8 push: true tags: project.azurecr.io/project:${{ env.VERSION_NUMBER }}
关键说明
docker-container驱动会启动独立的BuildKit容器处理构建任务,天然支持跨平台架构编译,解决默认docker驱动的限制。network=host驱动选项确保Buildx容器正常访问网络,避免推送镜像时出现连接问题。- 保持
platforms参数与手动构建命令一致,确保镜像架构的兼容性。
内容的提问来源于stack exchange,提问作者Daniyal Khawaja
相关产品推荐
相关产品推荐

