Creando una imagen de contenedor con soporte multiarquitectura
Una imagen con soporte multiarquitectura le permite correr su software en diferentes plataformas de hardware

Search for a command to run...
Una imagen con soporte multiarquitectura le permite correr su software en diferentes plataformas de hardware

No comments yet. Be the first to comment.
Utilidad para arrancar varios sistemas operativos usando una sola memoria USB

Requerimientos y ejemplos para utilizar esta tecnología en plataformas de Microsoft

Todos los nodos activos simultáneamente compartiendo la carga de trabajo, habilitando alta disponibilidad y escalabilidad.

OpenSSL 3.5 introdujo soporte para los algoritmos tipo PQC: ML-KEM, ML-DSA y SLH-DSA

Ideas y tecnología
8 posts
Por lo general, cuando se crea una imagen de contenedor, esta se construye con el objetivo de correrla en la misma plataforma de hardware en la cual es construído, sin embargo, es posible utilizar un emulador como QEMU para crear una imagen que pueda correr en otros dispositivos con una arquitectura distinta. Un ejemplo de esto sería correr un un mismo contenedor en un computador con soporte para instrucciones x86 (Intel/AMD) o en un Raspberry Pi (Arm).
Para nuestro laboratorio, vamos a utilizar una computadora x86 corriendo Ubuntu. Adicionalmente, es necesario tener Docker instalado utilizando las instrucciones oficiales.
Adicionalmente, es necesario contar con una cuenta en Docker hub (gratis)
Instalar QEMU en el sistema operativo
apt install -y qemu-user-static
Correr Binfmt en un contenedor
docker run --privileged --rm tonistiigi/binfmt --install all
Configurar Buildkit
docker buildx create --use --name mymultiarchbuilder \
--driver docker-container
docker buildx inspect --bootstrap
Iniciar sesión en Docker Hub
docker login
Crear el contenedor. Por favor note que es necesario reemplazar “<my username>” en el script con su username del Docker Hub
docker buildx build \
-t <my username>/mymultiarch:latest \
--platform linux/386,linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64/v8,linux/ppc64le,linux/riscv64,linux/s390x,linux/arm64 \
--push \
-f - . <<EOF
FROM alpine:latest
# Install bash inside the image for all target platforms
RUN apk add bash
# Define the command that will run when the container starts
CMD ["sh", "-c", "echo 'Hola desde Arch: $(uname -m)' && /bin/bash"]
EOF
Inspeccionando la imagen
docker buildx imagetools inspect <my username>/mymultiarch:latest

Corra el contenedor en diferentes hardware en diferentes plataformas
docker run --rm <my username>/mymultiarch:latest uname -m
Dependiendo de la plataforma desde la que ejecute el comando se mostrará la arquitectura en la que está corriendo el contenedor


Adicionalmente, puede abrir la imagen en Docker Hub y ver todas las plataformas que son soportadas por el contenedor

Es posible lograr que su software corra en varias plataformas logrando un rendimiento nativo gracias a la tecnología de cross compiling que permite lograr una verdadera multiarquitectura en donde su software no corre siendo emulado sino utilizando las instrucciones nativas que ofrece el procesador. De la misma manera, este tipo de contenedores pueden ser utilizados en clusters de Kubernetes que ofrecen capacidades de hospedaje híbrido, en donde usted podría por ejemplo correr su software en hardware x86 a la par de estaciones de trabajo Apple con procesadores de la serie M (arm64) de una forma completamente transparente.