问题描述
我正在运行 Docker Apple Silicon Preview. 的最新版本,我创建了教程容器/图像,它运行良好。当我创建自定义 YAML 文件并运行 docker-compose 时,在拉取 MysqL 时出现以下错误:
错误:清单列表条目中没有与 linux/arm64/v8 匹配的清单
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。
解决方法
好吧,从技术上讲,它不会解决您的问题(在 ARM 上运行 MySQL),但就目前而言,您可以将 platform
添加到您的服务中,例如:
services:
db:
platform: linux/x86_64
image: mysql:5.7
...
或者,考虑使用 MariaDB,它应该可以作为替代品,例如这个:
services:
db:
image: mariadb:10.5.8
...
使用 Docker 预览版在 M1 上这两种方法都对我有用
,同样的问题 m1 mac 只需运行此命令
docker pull --platform linux/x86_64 mysql
,
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
,
我有一个类似的问题,在我的 dockerfile 中用这一行解决了:
之前
FROM ubuntu:18.04
之后
FROM --platform=linux/x86_64 ubuntu:18.04
,
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"
,
对于任何努力使其与特定版本一起工作的人,以下对我不起作用:
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