如何在GitHub工作流中构建i386架构Docker镜像?
可以指定GitHub Actions Runner的处理器架构吗?
当然可以指定runner的处理器架构,针对你需要同时构建i386和x86_64 Docker镜像的需求,具体处理方式如下:
1. GitHub托管Runner的架构指定
GitHub官方托管的runner支持x86_64和ARM64架构,可通过runs-on字段直接指定:
- x86_64架构:使用
ubuntu-22.04(默认即为x86_64) - ARM64架构:使用
ubuntu-22.04-arm64
但GitHub目前没有提供原生的i386托管runner,要构建i386镜像,需借助QEMU模拟或者自托管i386 runner。
2. 同时构建i386和x86_64镜像的最佳实践
最便捷的方式是用Docker Buildx工具,它能在单台x86_64 runner上通过QEMU模拟多架构环境,一次性构建并推送多架构镜像到Docker Hub。
以下是完整的工作流示例:
name: Build Multi-Arch Docker Images on: [push] jobs: build: runs-on: ubuntu-22.04 steps: - name: Checkout code uses: actions/checkout@v4 - name: Set up QEMU uses: docker/setup-qemu-action@v3 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Login to Docker Hub uses: docker/login-action@v3 with: username: ${{ secrets.DOCKER_HUB_USERNAME }} password: ${{ secrets.DOCKER_HUB_TOKEN }} - name: Build and push multi-arch images uses: docker/build-push-action@v5 with: context: . platforms: linux/386,linux/amd64 push: true tags: your-docker-username/your-image-name:latest
关键步骤说明:
docker/setup-qemu-action:安装QEMU模拟器,让x86_64 runner具备模拟i386架构的能力docker/setup-buildx-action:启用Docker Buildx的多架构构建功能platforms: linux/386,linux/amd64:明确指定要构建的目标架构- 推送后Docker Hub会自动生成多架构镜像清单,用户拉取时会自动匹配对应架构
若不想使用模拟,也可搭建自托管的i386 runner,在工作流中通过runs-on指定该runner后,分别构建不同架构的镜像。
内容的提问来源于stack exchange,提问作者Daniel Walker
相关产品推荐
相关产品推荐

