【问题标题】:Docker image run in m1 processorDocker 镜像在 m1 处理器中运行
【发布时间】:2021-06-02 00:20:06
【问题描述】:

我只能通过 docker preview 在我的 macbook air m1 上玩,我无法通过 docker-compose 文件运行 8.0.22 版本的 mysql 映像。

docker-compose set

我运行的命令是:docker-compose up -d mysql

我该如何解决这个问题?

【问题讨论】:

  • Ioanni,如果您将docker-compose 部分添加为文本会更好。这样,SO 用户就有更多的可能性会花一些时间尝试重新创建您的问题并提供答案。另见:How to create a Minimal, Reproducible Example
  • 您还可以发布您遇到的任何相关错误吗?请记住,根据 Docker M1 Preview 发行说明here,mysql 没有 ARM64 映像的已知问题

标签: mysql macos docker docker-compose apple-m1


【解决方案1】:

我们刚刚遇到了这个问题,我从this answer 那里得到了解决方案。您可以在 docker-compose 文件中指定您的平台,因此在您的情况下,它看起来像:

services:
  mysql:
    image: mysql:8.0.22
    platform: linux/x86_64
    container_name: mysqldb
    restart: always
    ports:
      - 3306:3306
    volumes:
      - mysql:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=test
      - MYSQL_DATABASE=DATA

在我们公司,我们使用 M1 和 Intel Macs,此解决方案使 mysql 映像可用于两者。

【讨论】:

  • 您使用的是 docker-compose 版本 3 吗?该版本似乎没有平台
【解决方案2】:

M1 是 ARMv8 (aarch64) 架构,大部分镜像是 X86 (amd64)。基于bitfmt的整个模拟过程允许从另一个架构运行容器对于Docker for Mac的ARMv8版本仍然不稳定,所以你需要等待一些时间。

解决这个问题的一种方法是为 ARM64 构建您自己的 mysql 映像,从一些 linux 发行版(例如 alpinedebianubuntu)开始并安装 mysql 服务器(相同就像您在裸机安装上所做的那样)。

您可以在标记为ARM64v8 的 docker hub 中找到许多已经可用的容器,因此这可以作为创建映像的良好起点。

【讨论】:

    【解决方案3】:

    我还在 M1 Mac 上处理 X86 (amd64) 图像。但在您的特定情况下,我建议简单地使用 MariaDB(图像 mariadb)。到目前为止,我尝试的所有东西都与 MySQL 完全兼容,并且 MariaDB 可用于 ARM64。

    【讨论】:

      【解决方案4】:

      您还可以使用mariadb 作为支持 M1 (arm64) 的mysql 的直接替代品:

          mysql:
              restart: unless-stopped
              image: mysql:5.7.14
      

      变成:

          mysql:
              restart: unless-stopped
              image: mariadb:10.2.41
      

      这是 MariaDB 图像的最新标签列表:

      https://hub.docker.com/_/mariadb?tab=tags

      【讨论】:

        猜你喜欢
        • 2021-07-06
        • 2022-10-15
        • 1970-01-01
        • 2017-03-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-04-03
        相关资源
        最近更新 更多