You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker镜像在Ubuntu运行报错:exec /usr/local/openjdk-11/bin/java: exec format error

解决Docker镜像跨平台运行的exec格式错误问题

你遇到的这个问题根源很明确:你拉取的mademustafa/postmage:latest镜像只构建了linux/arm64/v8平台版本,而你的Ubuntu 20.04是linux/amd64(x86_64)架构,两者不兼容,导致镜像里的arm64版本Java二进制文件无法在amd64系统上执行,直接触发了exec /usr/local/openjdk-11/bin/java: exec format error这个报错。

快速临时解决方案

直接在拉取或运行镜像时指定匹配Ubuntu的平台架构即可:

  • 拉取时指定平台:
    docker pull --platform linux/amd64 mademustafa/postmage:latest
    
  • 或者跳过重新拉取,直接在运行时指定平台:
    docker run -it --platform linux/amd64 mademustafa/postmage:latest
    

不过这个方案生效的前提是,该镜像的Docker Hub仓库里已经存在linux/amd64版本的镜像。如果仓库里没有,你需要构建多平台镜像来彻底解决问题。

长期彻底解决方案:构建多平台镜像

如果这个镜像是你自己维护的,推荐用Docker Buildx构建支持多架构的镜像,这样不管是arm64架构的MacBook还是amd64架构的Ubuntu都能正常运行:

  1. 先启用Docker Buildx工具:
    docker buildx create --use
    
  2. 构建并推送多平台镜像到Docker Hub(需要你拥有该镜像仓库的推送权限):
    docker buildx build --platform linux/amd64,linux/arm64/v8 -t mademustafa/postmage:latest --push .
    

这样构建出来的镜像会同时包含amd64和arm64版本,Docker会自动根据宿主机架构拉取匹配的版本,后续就不会再出现平台不匹配的问题了。

补充一句:你的MacBook能正常运行是因为M系列芯片属于arm64架构,和镜像的平台完全匹配,自然没有兼容性问题。

内容的提问来源于stack exchange,提问作者Mustafa Maden

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 18:35:27