Я запускаю последнюю сборку 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.
Там только образы amd64... Теги mysql \- Docker Hub
Странно, я считаю, что MySQL поддерживает ARM Источник: mysqlonarm.github.io/Running-MySQL-on-ARM
@AkihitoKIRISAKI hub.docker.com/r/mysql/mysql-server/… (сервер) выглядит так же, но это будет установлено.
Версия @Sam mysql-server:5.7
слишком старая для поддержки arm64! hub.docker.com/layers/mysql/mysql-server/5.7/images/…
Там, где доступно изображение linux/amd64
, я считаю, что это основная проблема: github.com/containerd/containerd/issues/3225
Оформить второй ответ stackoverflow.com/a/67361161/316343 если вы не ищете конкретно mysql.
Ну, технически это не решит вашу проблему (запуск MySQL на ARM), но пока вы можете добавить platform
к своему сервису, например:
services:
db:
platform: linux/x86_64
image: mysql:5.7
...
В качестве альтернативы рассмотрите возможность использования MariaDB, которая должна работать как замена, например, например. этот:
services:
db:
image: mariadb:10.5.8
...
Оба способа работают для меня на M1 с Docker Preview
То же самое я сделал для изображения «percona» (mysql на стероидах). Спасибо!
Для докера (без компоновки) вы можете сделать: docker run --platform linux/x86_64 mysql
который также загружает и запускает правильные изображения на M1. Спасибо большое за этот пост!
Могу ли я предложить вам изменить версию MySQL на 8? Правка слишком короткая для отправки
Есть ли способ установить изображение на основе текущей арки в файле компоновки докера? Скажем, использовать mysql, если работаете на x86, или использовать mariadb, если работаете на руке?
@jibeeeee, исходный вопрос задавался о mysql5.7 . Вероятно, вы можете просто использовать mysql-server:8.0 или любую другую версию, которую вы предпочитаете.
Могут ли наши работодатели с Intel i7 использовать ту же конфигурацию?
@AlexShtromberg - это должно работать и на машинах Intel, так как это архитектура x86 ...
Отлично работал с Mac OS под управлением Apple Silicon M1. Спасибо!
Альтернатива, которую вы предложили, mariadb
контейнер отлично работал, яблочный силикон / рука
Добавление platform: linux/x86_64
решило проблему для меня на M1 Mac.
Поскольку это кажется принятым ответом, я хотел добавить, что обновление версии до чего-то вроде mysql:5.7.34
уже может решить проблему. У меня установлена rosetta2 и докер с поддержкой m1.
MariaDB больше не является заменой. Начиная с MySQL 5.7, версии отклоняются до такой степени, что восстановление дампов, сделанных с помощью mysqldump
в MySQL 5.7, больше не будет восстанавливаться в MariaDB. См., например. stackoverflow.com/questions/54875134/…
это решение добавить платформу в docker-compose идеально, просто и решает мою проблему
у меня была такая же проблема с изображением сонаркуба, и это работает для меня
FWIW, ни этот, ни какой-либо из ответов на этот вопрос не сработали для меня (я получил ту же ошибку, что и ОП). Моя машина M1 MBP с чипом M1 Max. Что касается моего личного опыта, то запустить MySQL под Docker, как с эмуляцией, так и без нее, в конце 2022 года по-прежнему невозможно. Мне трудно поверить, что никому не удалось успешно скомпилировать и опубликовать MySQL для M1.
Я попытался использовать это решение в своем файле для создания докеров, но мое приложение CMS локально было очень медленным, а страницы занимали более 10 секунд. для загрузки (также рабочий стол докера показал, что у меня может быть медленная производительность с этим контейнером)... Затем я удалил платформу, обновился до MySQL 8, и для меня не было проблем - он снова загружается за десятки миллисекунд...
У меня возникла такая же проблема с моим компьютером Mac M2, и это решило ее.
Оформить заказ stackoverflow.com/a/67361161/316343 если вы не ищете конкретно mysql.
У меня была аналогичная проблема, решенная с помощью этой строки в моем файле докеров:
до
FROM ubuntu:18.04
после
FROM --platform=linux/x86_64 ubuntu:18.04
Это отлично сработало, вам просто нужно добавить это в свой файл докера mysql для laradock FROM --platform=linux/x86_64 mysql:${MYSQL_VERSION}
Oracle поддерживает образ докера MySQL 8.0.23 для arm64.
https://hub.docker.com/r/mysql/mysql-сервер
Чтобы использовать его в файле 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 Mini M1, спасибо!
Я также использовал command: --default-authentication-plugin=mysql_native_password
на основе stackoverflow.com/a/52789430/332798
работал нормально для меня. Макбук Про М1
Работал на меня. Mac Air M1 2020 Биг Сур. Я попробовал выбрать ответ, но меня предупредили, что эмуляция linux/x86_64 может привести к ошибкам или накладным расходам памяти. Большое спасибо.
Это не сработало для меня вообще. Я получил ту же ошибку («нет соответствующего манифеста для linux/arm64/v8 в записях списка манифеста»), что и OP. Я также попытался установить платформу на «linux/amd64», «linux/x86_64» и «linux/x86_64/v8» и все равно получил ту же ошибку. Похоже, запустить MySQL под Docker с эмуляцией и без нее по-прежнему невозможно даже в сентябре 2022 года. Не могу поверить, что никто нигде не скомпилировал MySQL для M1.
@Aquarelle явно что-то не так с вашей настройкой, потому что я и многие другие отлично запускаем MySQL (с эмуляцией и без нее) на процессорах Apple M1. Если бы вы потратили время на чтение Dockerfile для образа, о котором я упоминал выше, вы бы увидели, что Oracle явно говорит, что он скомпилирован для ARM. hub.docker.com/r/mysql/mysql-сервер
@bpossolo Простите гневную тираду. Я могу даже удалить свой комментарий, если это возможно. Проблема была полностью в PEBKAC (я указывал docker compose на старый, устаревший файл компоновки в сценарии оболочки, и я понял это только пару часов назад, после чего я фейспалмил, а затем обновил скрипт). Теперь все работает прекрасно. Извини!
рад, что ты разобрался!
Перейдите по следующей ссылке, чтобы узнать об известных проблемах. В терминале вашего 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
делает свое дело.
Розетта - это то, что нужно, спасибо! docs.docker.com/docker-for-mac/apple-silicon
Для тех, кто пытается заставить его работать с определенной версией, у меня не сработало следующее:
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
такая же проблема для m1 mac просто запустите эту команду
docker pull --platform linux/x86_64 mysql
работало на mac mini m1, хотя мне пришлось добавить v8: linux/x86_64/v8
У меня работал MacBook Pro (13 дюймов, M1, 2020 г.)
Также работало у меня на M2: export DOCKER_DEFAULT_PLATFORM=linux/x86_64/v8
Из этого ответа я добавил это в свой локальный docker-compose.override.yml
services:
mysql:
platform: linux/amd64
это действительно сделало это для меня. м1 про 14''
M1 pro, пробовал ответы выше, не повезло, но этот сработал для меня
Я также изменил версию mysql 5.7.22 на 5.7.
Не работает для меня
работал на простом Apple Silicon M1
можно попробовать запустить/запустить контейнер (для mac m1)
docker run -d -p 3306:3306 --name mysql --platform linux/x86_64 --env MYSQL_ROOT_PASSWORD=12345 mysql
Обратите внимание, что при использовании --platform linux/x86_64
на arm64/v8 вы можете потерять поддержку Linux Native AIO.
Проверьте журналы контейнера докеров:
[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 из коробки.
Этот репозиторий Github позволяет создать образ MySQL 5.7 aarch64.
Создайте его с помощью следующей команды (назовите его так же, как официальный образ mysql: 5.7), он будет использоваться по умолчанию всеми вашими конфигурациями docker-compose или файлами Docker, которые указывают mysql: 5.7.
docker build -t mysql:5.7 .
Это означает, что у вас больше не будет обновлений из официального репозитория MySQL Dockerhub, но в качестве временной замены я считаю его полезным.
Докер в своей официальной документации говорит:
Не все образы доступны для архитектуры ARM64. Можете добавить
--platform linux/amd64
для запуска образа Intel в режиме эмуляции. В в частности, образ mysql недоступен для ARM64. Вы можете работать вокруг этой проблемы с помощью изображения mariadb.
(источник здесь)
Итак, чтобы ваш проект заработал, вам нужно добавить platform: linux/amd64
в файл docker-compose.yml.
Это будет выглядеть так:
services:
mysql:
image: mysql:5.7
platform: linux/amd64
...
Как вы можете себе представить, вероятно, производительность не будет такой же.
Попытки запустить контейнеры x86 на машинах M1 в режиме эмуляции могут привести к сбою. Даже если контейнеры работают корректно в режиме эмуляции, они будут работать медленнее и использовать больше памяти, чем собственный эквивалент. Отсюда https://docs.docker.com/desktop/mac/apple-silicon/#known-issues
Это работает для меня в 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
Я также столкнулся с этой проблемой на M1 Pro, и наиболее стабильным способом решения для меня было отключить buildkit в настройках движка Docker, что означает установку значения false вместо значения по умолчанию true. Здесь также есть открытая проблема https://github.com/docker/for-mac/issues/5873
Посмотрите на этот пост на гитхабе
Поскольку «Oracle поставляет только предварительно скомпилированные двоичные файлы Arm64», у вас есть это с
Изображение --> mysql:8.0-оракул
docker run -d --name mysql-8 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=<ваш_пароль> mysql:8.0-oracle
Изменить платформу в команде docker
Параметр: --platform linux/x86_64
Это для тех, кто здесь по той же проблеме, но с ibmcom/db2
Вы можете использовать приведенную ниже команду, чтобы получить образ db2.
docker pull --platform linux/x86_64 ibmcom/db2:latest
Использование этого изображения ниже решило мою проблему.
mysql/mysql-server:8.0.23
В вашем Dockerfile
для mysql, если у вас есть следующее
FROM mysql:8.0.28
изменить его на
FROM --platform=linux/x86_64 mysql:8.0.28
потому что Docker в Apple M1 будет искать образ ARM, а MySQL не публикует образы ARM, поэтому вы получаете
не удалось решить с помощью внешнего интерфейса dockerfile.v0: не удалось создать LLB определение: не соответствует платформе в манифесте
с флагом --platform
, несмотря на то, что мы находимся в процессоре ARM, мы говорим докеру, что хотим использовать изображение x86_64
У меня чип М1.
Сегодня я обнаружил, что это отлично работает в последней основной ветке KSQL. Вот команды
git clone https://github.com/confluentinc/ksql.git
cd ksql
docker-compose up -d
Он волшебным образом вызывает Zookeeper, три экземпляра сервера Kafka, реестр схем и интерфейс командной строки.
Ссылка: Руководство по докеру KSQLDB
Чтобы решить эту проблему, нам нужно передать платформу со значением в ваш образ/файл докера.
Используя файл docker-compose.yaml:
services:
db:
platform: linux/x86_64
image: mysql:5.7
...
Использование файла Docker:
FROM --platform=linux/x86_64 mysql:5.7
Использование команды docker pull:
docker pull --platform=linux/x86_64 mysql:5.7
Используя параметр DOCKER_DEFAULT_PLATFORM:
export DOCKER_DEFAULT_PLATFORM=linux/x86_64
Некоторые из других известных платформ: linux/amd64
, linux/arm64
и т. д.
docker run --platform linux/amd64 --name mysql-5-7 -e MYSQL_ROOT_PASSWORD=root -p 3306:3306 -d mysql:5.7
Вам просто нужно указать платформу после указания образа. Работает на процессоре M2
version: '3'
services:
# Database
db:
image: mysql-server:5.7
platform: linux/amd64 <--------- this line to add
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: pass
MYSQL_DATABASE: wp
MYSQL_USER: wp
MYSQL_PASSWORD: wp
networks:
- wpsite
И есть ли у сопровождающих MySQL образ для этой архитектуры?