【问题标题】:Docker (Apple Silicon/M1 Preview) MySQL "no matching manifest for linux/arm64/v8 in the manifest list entries"Docker(Apple Silicon/M1 Preview)MySQL“清单列表条目中没有与 linux/arm64/v8 匹配的清单”
【发布时间】:2021-04-03 23:55:59
【问题描述】:

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

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

这是我的 YAMl 文件中的一个 sn-p:

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。

【问题讨论】:

标签: mysql docker apple-silicon


【解决方案1】:

好吧,从技术上讲,它不会解决您的问题(在 ARM 上运行 MySQL),但目前,您可以将 platform 添加到您的服务中,例如:

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

或者,考虑使用 MariaDB,它应该可以作为直接替代品,例如这个:

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

在 M1 上使用 Docker Preview 两种方式都适用

【讨论】:

  • 我对“percona”图像(类固醇上的mysql)也做了同样的事情。谢谢!
  • docs.docker.com/docker-for-mac/apple-m1 我看到文档已更新,包括在仿真下运行的说明(平台 linux/amd64 标志)并鼓励对 mariadb 的支持。
  • 对于 docker(没有 compose),您可以这样做:docker run --platform linux/x86_64 mysql,它也会在 M1 上拉取并运行正确的图像。非常感谢您的这篇文章!
  • 我可以建议您将 mysql 版本更改为 8 吗?编辑是提交的简称
  • @AlexShtromberg - 这应该也适用于英特尔机器,因为它是 x86 架构......
【解决方案2】:

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

docker pull --platform linux/x86_64 mysql

【讨论】:

  • 在 mac mini m1 上工作,尽管我不得不添加 v8:linux/x86_64/v8
  • 为我工作的 MacBook Pro(13 英寸,M1,2020)
  • 这在我的 MacBook Pro M1 上完美运行
【解决方案3】:

Oracle 为 arm64 维护一个 MySQL 8.0.23 docker 映像。
https://hub.docker.com/r/mysql/mysql-server

在你的 docker-compose 文件中使用它

version: "3.8"
services:
  mysql:
    container_name: mycontainername
    image: mysql/mysql-server:8.0.23
    ports:
      - "3306:3306"
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: mydatabasename
      MYSQL_ROOT_HOST: "%"
    command: --lower_case_table_names=1

【讨论】:

  • Mac Mimi M1 的工作就像一个魅力,谢谢!
【解决方案4】:

来自this answer,我将此添加到我的本地docker-compose.override.yml

services:

  mysql:
    platform: linux/amd64
    ports:

【讨论】:

    【解决方案5】:

    我有一个类似的问题,在我的 dockerfile 中用这一行解决了:

    之前

    FROM ubuntu:18.04
    

    之后

    FROM --platform=linux/x86_64 ubuntu:18.04
    

    【讨论】:

    • 这很好用,您只需将其添加到 laradock 的 mysql docker 文件 FROM --platform=linux/x86_64 mysql:${MYSQL_VERSION}
    【解决方案6】:

    对于任何努力使其适用于特定版本的人,以下内容对我不起作用:

    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
    

    【讨论】:

      【解决方案7】:

      Please refer to the following link 已知问题。在你的 Mac 终端运行

      softwareupdate --install-rosetta
      

      然后在 docker-compose 中有类似的东西

      mysql_gdpr:
          platform: linux/x86_64
          image: mysql/mysql-server:8.0.23
          ports:
            - "3306:3306"
          environment:
            MYSQL_DATABASE: "user_security"
            MYSQL_RANDOM_ROOT_PASSWORD: 1
            MYSQL_USER: "security"
            MYSQL_PASSWORD: "pleasechangeit"
      

      【讨论】:

      【解决方案8】:

      可以尝试启动/运行容器(对于 mac m1)

      docker run -d -p 3306:3306 --name mysql --platform linux/x86_64 --env MYSQL_ROOT_PASSWORD=12345 mysql
      

      【讨论】:

      • 感谢他的工作
      【解决方案9】:

      Docker 在其官方文档中说:

      并非所有映像都可用于 ARM64 架构。你可以加 --platform linux/amd64 在仿真下运行英特尔映像。在 特别是 mysql 映像不适用于 ARM64。你可以工作 通过使用 mariadb 图像解决此问题。

      (来源here

      所以你应该做的就是将platform: linux/amd64添加到你的docker-compose.yml中。

      看起来像:

      services:
          mysql:
              image: mysql:5
              platform: linux/amd64
              ...
      

      您可以想象,性能可能会有所不同。

      【讨论】:

        【解决方案10】:

        请注意,在 arm64/v8 上使用 --platform linux/x86_64 时,您可能会失去对 Linux Native 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。

        【讨论】:

          【解决方案11】:

          Github repo 允许构建 MySQL 5.7 aarch64 映像。

          使用以下命令构建它(将其命名为与官方 mysql:5.7 映像相同),默认情况下,所有指定 mysql:5.7 的 docker-compose 配置或 Dockerfile 都会使用它。

          docker build -t mysql:5.7 .
          

          这意味着您将不再有来自官方 MySQL Dockerhub 存储库的更新,但作为临时替代品,我觉得它很有用。

          【讨论】:

            猜你喜欢
            • 2021-06-03
            • 2023-02-18
            • 2018-06-12
            • 1970-01-01
            • 2020-05-07
            • 1970-01-01
            • 2020-03-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多