Estoy ejecutando la última versión de Docker Apple Silicon Preview. Creé el contenedor/imágenes del tutorial y funciona bien. Cuando fui a crear un archivo YAML personalizado y ejecuté docker-compose, aparece el siguiente error al extraer mysql:
ERROR: no hay un manifiesto coincidente para linux/arm64/v8 en las entradas de la lista de manifiestos
Aquí hay un fragmento de mi archivo 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: - wpsiteProbé :latest y :8 que dan como resultado el mismo error. Tira bien de phpmyadmin y wordpress.
Bueno, técnicamente no resolverá su problema (ejecutar MySQL en ARM), pero por el momento, podría agregar una platform a su servicio como:
services: db: platform: linux/x86_64 image: mysql:5.7 ...Alternativamente, considere usar MariaDB, que debería funcionar como un reemplazo directo como, por ejemplo, este:
services: db: image: mariadb:10.5.8 ...Ambas formas funcionan para mí en M1 con Docker Preview
Tuve un problema similar, resuelto con esta línea en mi dockerfile:
antes de
FROM ubuntu:18.04después
FROM --platform=linux/x86_64 ubuntu:18.04Consulte el siguiente enlace para conocer los problemas conocidos. En la terminal de tu Mac, ejecuta
softwareupdate --install-rosettay luego en docker-compose tener algo similar a
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"Para cualquiera que tenga dificultades para que funcione con una versión específica, lo siguiente no funcionó para mí:
docker run --platform linux/x86_64 mysql:5.7.26 -e MYSQL_ROOT_PASSWORD=passpero esto hizo:
docker run --platform linux/x86_64 mysql:5.7 -e MYSQL_ROOT_PASSWORD=passmismo problema para m1 mac solo ejecuta este comando
docker pull --platform linux/x86_64 mysqlDe esta respuesta , agregué esto a mi docker-compose.override.yml local
services: mysql: platform: linux/amd64 ports:Oracle mantiene una imagen docker de MySQL 8.0.23 para arm64.
https://hub.docker.com/r/mysql/mysql-server
Para usarlo en su archivo 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=1Este repositorio de Github permite construir una imagen MySQL 5.7 aarch64.
Construyéndolo con el siguiente comando (nombrándolo igual que la imagen mysql:5.7 oficial), se usará de forma predeterminada en todas las configuraciones de docker-compose o Dockerfiles que especifiquen mysql:5.7.
docker build -t mysql:5.7 .Significa que ya no tendrá actualizaciones del repositorio oficial de MySQL Dockerhub, pero como reemplazo temporal lo encuentro útil.
Docker en su documentación oficial dice:
No todas las imágenes están disponibles para la arquitectura ARM64. Puede agregar
--platform linux/amd64para ejecutar una imagen Intel bajo emulación. En particular, la imagen mysql no está disponible para ARM64. Puede solucionar este problema utilizando una imagen de mariadb.
(fuente aquí )
Entonces, lo que debe hacer para que su proyecto funcione es agregar platform: linux/amd64 a su docker-compose.yml.
Se vería como:
services: mysql: image: mysql:5.7 platform: linux/amd64 ...Como puedes imaginar, probablemente el rendimiento no será el mismo.
Tenga en cuenta que al usar --platform linux/x86_64 en arm64/v8, es posible que pierda la compatibilidad con Linux Native AIO .
Consulte los registros del contenedor 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.Considere usar mysql/mysql-server en su lugar, ya que tiene soporte arm64/v8 listo para usar.
puede intentar iniciar/ejecutar un contenedor (para mac m1)
docker run -d -p 3306:3306 --name mysql --platform linux/x86_64 --env MYSQL_ROOT_PASSWORD=12345 mysqlLos intentos de ejecutar contenedores x86 en máquinas M1 bajo emulación pueden bloquearse. Incluso cuando los contenedores se ejecutan correctamente en la emulación, serán más lentos y usarán más memoria que el equivalente nativo. Desde aquíhttps://docs.docker.com/desktop/mac/apple-silicon/#known-issues