GitHub Actions构建Docker镜像报错no matching manifest for linux/amd64的排查与解决
问题根源分析
你的问题主要来自两个核心原因:
- 基础镜像已停止维护:你使用的
adoptopenjdk/openjdk11-openj9:latest镜像仓库已被官方归档(AdoptOpenJDK项目已迁移至Eclipse Temurin),导致GitHub Actions运行的ubuntu-latest(amd64架构)无法找到匹配的镜像manifest,这就是报错no matching manifest for linux/amd64的直接诱因。 - GitHub Action版本过时:
docker/build-push-action@v1已被官方废弃,虽然之前能正常运行,但旧版本的兼容性和功能已跟不上当前Docker生态与GitHub环境的变化。
修复步骤
1. 替换Dockerfile中的基础镜像
将废弃的AdoptOpenJDK镜像替换为官方维护的Eclipse Temurin镜像(它是AdoptOpenJDK的继任者,支持amd64架构且持续更新):
# 替换原有的FROM行 FROM eclipse-temurin:11-jre-openj9
如果追求更稳定的环境,建议指定具体版本号(强烈推荐):
FROM eclipse-temurin:11.0.22_7-jre-openj9
2. 升级GitHub Action到最新稳定版
废弃的v1版本参数与新版不兼容,建议拆分登录和构建推送步骤(更清晰且符合最佳实践),使用最新的v5版本:
# 先登录到阿里云镜像仓库 - name: Login to Aliyun Docker Registry uses: docker/login-action@v3 with: registry: ${{ secrets.ALI_DOCKER_HUB_REGISTRY }} username: ${{ secrets.ALIYUN_DOCKER_REPO_USER_NAME }} password: ${{ secrets.ALIYUN_DOCKER_REPO_USER_PASSWORD }} # 然后构建并推送镜像 - name: Build and push image to Aliyun uses: docker/build-push-action@v5 with: context: ./dolphin-gateway # 对应原来的path参数 push: true tags: ${{ secrets.ALI_DOCKER_HUB_REGISTRY }}/reddwarf-pro/dolphin-gateway:${{ github.sha }}
未来避免此类问题的建议
- 拒绝使用
latest标签:latest标签会自动拉取最新镜像,容易因镜像更新引发兼容性问题,尽量用具体版本号锁定基础镜像。 - 定期更新GitHub Actions:关注官方Action的版本迭代,废弃版本会停止维护,及时升级到稳定的最新版本,降低兼容性风险。
- 跟踪基础镜像官方动态:比如AdoptOpenJDK迁移到Eclipse Temurin这类重大变动,及时更换镜像源,避免使用已归档的仓库。
- 提前验证基础镜像:在构建前添加拉取基础镜像的步骤,提前发现拉取失败问题,例如:
- name: Validate base image run: docker pull eclipse-temurin:11-jre-openj9
内容的提问来源于stack exchange,提问作者Dolphin
相关产品推荐
相关产品推荐

