我正在运行最新版本的Docker Apple Silicon Preview。我创建了教程容器/图像,它工作得很好。当我去创建一个自定义YAML文件并运行docker-compose时,我在拉mysql时得到以下错误:

错误:在清单列表条目中没有匹配linux/arm64/v8的清单

下面是我YAMl文件中的一个片段:

version: '3'

services:
  # Database
  db:
    image: mysql-server:5.7
    volumes:
      - db_data:/var/lib/mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: pass
      MYSQL_DATABASE: wp
      MYSQL_USER: wp
      MYSQL_PASSWORD: wp
    networks:
      - wpsite 

我尝试了:latest和:8,结果是相同的错误。它拉phpmyadmin和wordpress很好。


当前回答

看看这篇github帖子

因为“Oracle只提供预编译的Arm64”二进制文件,所以你有了它

mysql:8.0-oracle

docker命令-d——name mysql-8 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=<your_password> mysql:8.0-oracle

其他回答

使用下面的图片解决了我的问题。

mysql/mysql-server:8.0.23

从技术上讲,这并不能解决你的问题(在ARM上运行MySQL),但暂时,你可以为你的服务添加平台,比如:

services:
  db:
    platform: linux/x86_64
    image: mysql:5.7
    ...

或者,考虑使用MariaDB,它应该作为一个替代物,例如:

services:
  db:
    image: mariadb:10.5.8
    ...

这两种方法都适用于我在M1上的Docker预览

对于那些努力使用特定版本的人来说,下面的方法对我来说并不适用:

docker run --platform linux/x86_64 mysql:5.7.26 -e MYSQL_ROOT_PASSWORD=pass

但这确实起了作用:

 docker run --platform linux/x86_64 mysql:5.7 -e MYSQL_ROOT_PASSWORD=pass

请注意,当在arm64/v8上使用——platform linux/x86_64时,你可能会失去linux本机AIO支持。

查看docker容器日志:

[ERROR] [MY-012585] [InnoDB] Linux Native AIO interface is not supported on this platform. Please check your OS documentation and install appropriate binary of InnoDB.
[Warning] [MY-012654] [InnoDB] Linux Native AIO disabled.

考虑使用mysql/mysql-server,因为它有arm64/v8开箱即用的支持。

同样的问题,m1 MAC运行这个命令

docker pull --platform linux/x86_64 mysql