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

Oracle Cloud容器创建失败:平台不匹配引发执行格式错误求助

解决Oracle Cloud ARM实例上Docker Compose平台不匹配的执行格式错误

你遇到的问题是典型的跨架构镜像运行冲突:Oracle Cloud的Ampere实例是ARM64(linux/arm64/v8)架构,而你指定的MySQL、phpMyAdmin镜像是AMD64版本,即使在Compose里加了platform: linux/amd64,主机默认也没有开启跨架构模拟支持,导致无法执行x86格式的二进制文件。下面给你两种实用的解决方案:

方案1:启用QEMU跨架构模拟(继续运行AMD64镜像)

通过配置QEMU用户态模拟,让Docker可以在ARM主机上兼容运行AMD64架构的镜像,步骤如下:

  1. 安装QEMU和二进制格式支持工具
    sudo apt update && sudo apt install -y qemu-user-static binfmt-support
    
  2. 注册x86_64架构的模拟支持
    sudo update-binfmts --enable qemu-x86_64
    
    或者用Docker官方镜像一键配置(更简便):
    docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
    
  3. 重新启动你的Docker Compose服务
    docker-compose up -d
    

完成后,Docker就能通过QEMU模拟运行AMD64镜像,之前的执行格式错误会消失。

方案2:改用ARM64原生镜像(性能更优)

其实MySQL和phpMyAdmin官方都提供了ARM64架构的原生镜像,完全不需要模拟,性能还更好。你可以直接去掉Compose文件里的platform: linux/amd64配置,让Docker自动拉取适配主机架构的镜像:

修改后的Docker Compose配置:

version: "3.7"
services:
  db:
    image: mysql
    command: --default-authentication-plugin=mysql_native_password
    environment:
      MYSQL_ROOT_PASSWORD: "Root193782"
      MYSQL_DATABASE: "test"
    ports:
      - "3306:3306"
    volumes:
      - /data/mysql:/var/lib/mysql
    restart: always
    networks:
      - mysql-network
  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    environment:
      MYSQL_ROOT_PASSWORD: "Root193782"
    ports:
      - "8080:80"
    volumes:
      - /data/php/admin/uploads.ini:/usr/local/etc/php/conf.d/php-phpmyadmin.ini
    networks:
      - mysql-network
networks:
  mysql-network:

保存后重新运行docker-compose up -d,Docker会自动拉取ARM64版本的镜像,完美适配你的Oracle Cloud实例,也不会有模拟带来的性能损耗。

小补充:如果遇到Docker仍拉取AMD64镜像的情况,可以手动指定ARM64标签,比如mysql:8.0-debian(Debian基础镜像通常支持多架构),或者用docker pull mysql --platform linux/arm64/v8先拉取对应架构的镜像。

内容的提问来源于stack exchange,提问作者Cleber Júnior

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 19:07:41