Skip to content

Instantly share code, notes, and snippets.

@domingogallardo
Last active July 25, 2023 10:40
Show Gist options
  • Save domingogallardo/126d3b7841986b1ed73a577ed0527ad6 to your computer and use it in GitHub Desktop.
Save domingogallardo/126d3b7841986b1ed73a577ed0527ad6 to your computer and use it in GitHub Desktop.
Cómo crear una imagen Docker multiplataforma en un MacBook M1

Imágenes Docker multiplataforma en MacBook M1

Las imágenes Docker creadas en un MacBook M1 tienen la arquitectura linux/arm64 y no funcionan en ordenadores con el procesador Intel, que necesitan la arquitectura linux/amd64.

Para solucionar este problema podemos crear y subir a Docker Hub una imagen multiplataforma. Así tendremos una imagen que funciona bien para ordenadores Intel y para ordenadores con arquitectura ARM como el MacBook M1.

Construir imágenes multiplataforma

Probado con la versión 3.5.2 de Docker Desktop y la versión 20.10.7 de Docker Engine.

Para configurar buildx:

$ docker buildx create --name mbuilder
$ docker buildx use mbuilder
% docker buildx inspect --bootstrap                                                                        
Name:   mbuilder
Driver: docker-container

Nodes:
Name:      mbuilder0
Endpoint:  unix:///var/run/docker.sock
Status:    running
Platforms: linux/arm64, linux/amd64, linux/riscv64, linux/ppc64le,
linux/s390x, linux/386, linux/mips64le, linux/mips64, linux/arm/v7,
linux/arm/v6

Antes de construir la imagen debemos logearnos en Docker Hub, porque la imagen multiplataforma no se almacena en local, sino que hay que subirla al repositorio.

$ docker login -u domingogallardo

Y ahora ya podemos crear una imagen capaz de ejecutarse en la arquitectura linux/amd64 y linux/arm64:

$ docker buildx build --platform linux/amd64,linux/arm64 -t domingogallardo/getting-started:latest --push .

Con este comando se construye la imagen multiplataforma y se sube a Docker Hub.

Ejecutar la imagen en local

Como siempre, para ejecutar la imagen, haremos docker run. Docker examinará la arquitectura del ordenador y se descargará la imagen apropiada.

$ docker run -dp 3000:3000 domingogallardo/getting-started 

Si estamos en una máquina Intel se bajará la imagen linux/amd64 y si estamos en un MacBook M1 se bajará la imagen linux/arm64.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment