Docker(Apple Silicon/M1 Preview)MySQL“清单列表条目中没有与 linux/arm64/v8 匹配的清单”
Posted
技术标签:
【中文标题】Docker(Apple Silicon/M1 Preview)MySQL“清单列表条目中没有与 linux/arm64/v8 匹配的清单”【英文标题】:Docker (Apple Silicon/M1 Preview) MySQL "no matching manifest for linux/arm64/v8 in the manifest list entries" 【发布时间】: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 维护人员为该架构推送了一个图像? 只有amd64的图片...mysql Tags \- Docker Hub 奇怪,我相信MySQL支持ARM 来源:mysqlonarm.github.io/Running-MySQL-on-ARM @AkihitoKIRISAKI hub.docker.com/r/mysql/mysql-server/…(服务器)看起来一样,但会安装。 @Sammysql-server:5.7
版本太旧,无法支持 arm64! hub.docker.com/layers/mysql/mysql-server/5.7/images/…
【参考方案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"
【讨论】:
只需添加platform: linux/x86_64
即可。
Rosetta 是最好的选择,谢谢! docs.docker.com/docker-for-mac/apple-silicon【参考方案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 存储库的更新,但作为临时替代品,我觉得它很有用。
【讨论】:
以上是关于Docker(Apple Silicon/M1 Preview)MySQL“清单列表条目中没有与 linux/arm64/v8 匹配的清单”的主要内容,如果未能解决你的问题,请参考以下文章
在 Apple Silicon M1 Mac 上安装 Cryptography
如何在 Apple Silicon M1 上原生安装 NodeJS?
在 Apple Silicon M1 上使用 Ruby 3.0.2 在 MacOS Monterey 上安装 sqlite3 时出错
如何修复 iOS 模拟器 [native-run] ERR_DEVICE_LOCKED:在 Apple Silicon (M1) 上 1 分钟后设备仍被锁定?
Mac Apple Silicon M1/M2 homebrew miniforge conda pytorch yolov5深度学习环境搭建并简单测试MPS GPU加速