自定义Docker镜像在GitLab CI/CD中运行报错exec /usr/bin/sh: exec format error
解决GitLab CI/CD中Docker镜像执行报错
exec /usr/bin/sh: exec format error 问题诊断
这个错误的核心原因是你构建的Docker镜像CPU架构与GitLab Runner所在主机的架构不兼容。比如你在ARM架构机器(如苹果M系列芯片)上构建了ARM版本的镜像,而GitLab Runner运行在x86_64(AMD/Intel)架构的服务器上,就会出现这种执行格式不匹配的错误。
解决方案
方案1:构建支持多架构的镜像(推荐)
通过Docker Buildx构建同时兼容x86_64和ARM的镜像,确保不同架构的Runner都能正常运行:
- 确保Docker Buildx已启用(Docker Desktop默认已开启)
- 执行以下命令构建并推送多架构镜像:
docker buildx create --use docker buildx build --platform linux/amd64,linux/arm64 -t rethkevin/rf:v1 --push .
方案2:指定单一架构构建(仅x86_64)
如果你只需要适配x86_64架构的GitLab Runner,在构建镜像时直接指定目标平台:
docker build --platform linux/amd64 -t rethkevin/rf:v1 . docker push rethkevin/rf:v1
验证方式
构建完成后,可通过以下命令检查镜像的架构信息:
docker inspect rethkevin/rf:v1 | grep -A2 Architecture
或者登录Docker Hub,查看镜像详情页的架构支持列表,确认包含GitLab Runner所在的架构。
内容的提问来源于stack exchange,提问作者rkevx21
相关产品推荐
相关产品推荐

