Preparar imágenes multi-arquitectura
En este paso, prepararemos imágenes multi-arquitectura. Las imágenes multi-arquitectura te permiten construir y enviar imágenes que pueden ejecutarse en diferentes arquitecturas, como amd64
y arm64
. Esto es útil para desplegar aplicaciones en diversos entornos, incluyendo servidores en la nube, dispositivos perimetrales y máquinas locales.
Primero, necesitamos habilitar las características experimentales en Docker. Esto nos permite utilizar el comando buildx
, que es necesario para construir imágenes multi-arquitectura. Podemos hacer esto creando o modificando el archivo de configuración de Docker.
Abre el archivo de configuración de Docker utilizando nano
:
nano ~/.docker/config.json
Si el archivo no existe, nano
lo creará. Agrega el siguiente contenido al archivo. Si el archivo ya existe, agrega la línea "experimental": "enabled"
dentro del objeto JSON principal.
{
"experimental": "enabled"
}
Guarda el archivo presionando Ctrl + X
, luego Y
y Enter
.
A continuación, necesitamos crear una nueva instancia de constructor que soporte múltiples arquitecturas. Una instancia de constructor es un componente de Docker que gestiona el proceso de construcción.
Crea una nueva instancia de constructor llamada mybuilder
:
docker buildx create --name mybuilder --use
Este comando crea una nueva instancia de constructor llamada mybuilder
y la establece como el constructor predeterminado para las operaciones de construcción posteriores. La salida debe indicar que el constructor se ha creado y se está utilizando.
Ahora, construyamos una simple imagen multi-arquitectura. Utilizaremos un Dockerfile
básico que crea una imagen basada en Alpine Linux.
Crea un directorio para nuestro proyecto y navega hacia él:
mkdir ~/project/multiarch-demo
cd ~/project/multiarch-demo
Crea un Dockerfile
en este directorio:
nano Dockerfile
Agrega el siguiente contenido al Dockerfile
:
FROM alpine:latest
CMD ["echo", "Hello from multi-architecture image!"]
Guarda el Dockerfile
presionando Ctrl + X
, luego Y
y Enter
.
Ahora, construye la imagen para las arquitecturas linux/amd64
y linux/arm64
y envíala a un registro ficticio. Utilizaremos localhost:5000
como marcador de posición para el registro. En un escenario real, reemplazarías esto con la dirección real de tu registro.
Construye y envía la imagen multi-arquitectura:
docker buildx build --platform linux/amd64,linux/arm64 -t localhost:5000/multiarch-demo:latest --push .
Este comando construye la imagen para las plataformas especificadas (linux/amd64
y linux/arm64
), la etiqueta como localhost:5000/multiarch-demo:latest
y la envía al registro localhost:5000
. La salida mostrará el proceso de construcción para cada arquitectura y la operación de envío.