我正在运行最新版本的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很好。


当前回答

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

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

其他回答

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

之前

FROM ubuntu:18.04

FROM --platform=linux/x86_64 ubuntu:18.04

在你的Dockerfile for mysql中,如果你有以下文件

从mysql: 8.0.28

改为

FROM——platform=linux/x86_64 mysql:8.0.28

因为Apple M1中的Docker会寻找一个ARM映像,而MySQL不发布ARM映像,所以这就是为什么你会得到

无法用前端dockerfile解决。v0:创建LLB失败 定义:在manifest中没有平台的匹配

使用——platform标志,即使我们在ARM处理器中,我们也告诉docker我们想要使用x86_64映像

这在mac M1中为我工作,在服务中指定平台密钥。

services:
  mysql:
    platform: linux/amd64
    image: mysql:latest
    command: --default-authentication-plugin=mysql_native_password
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: example
    ports:
      - 3306:3306

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

mysql/mysql-server:8.0.23

已知问题请参考以下链接。在你的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"