微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Docker (Apple Silicon/M1 Preview) MySQL“在清单列表条目中没有与 linux/arm64/v8 匹配的清单”

如何解决Docker (Apple Silicon/M1 Preview) MySQL“在清单列表条目中没有与 linux/arm64/v8 匹配的清单”

我正在运行 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

解决方法

好吧,从技术上讲,它不会解决您的问题(在 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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。