Eso puede pasarte porque has hecho la imagen de Docker que has subido a Docker Hub con una arquitectura distinta de la que tienes en el servidor.
Por ejemplo, puede pasar si estás usando un Mac con M1 para crear las imágenes que has subido a docker hub y luego quieres desplegar esas imágenes en un servidor con procesodores de arquitectura de Intel.
Si las imágenes de la arquitectura correcta están creadas ya de antemano, se solucionaría simplemente indicando desde el servidor que quieres usar la plataforma necesaria:
docker pull midesweb/mikserver --platform linux/amd64
Sin embargo, no siempre tienes esa plataforma disponible, por lo que al hacer el build necesitas añadir esa plataforma. Para ello se usa un comando de Docker llamado buildx
.
Esto lo tienes que ejecutar en el ordenador de origen, donde has creado el build.
docker buildx create --name elbuilder
docker buildx use elbuilder
docker buildx inspect --bootstrap
Con esos comandos has creado y configurado el builder, con buildx.
Ahora puedes crear las plataformas que sean necesarias con este otro comando:
docker buildx build --push --tag usuario/proyecto -o type=image --platform=linux/arm64,linux/amd64 .
Una vez tienes ya el build con la plataforma correcta subido a docker hub, entonces puedes hacer el docker pull
con el --platform linux/amd64
en el servidor, para indicar qué plataforma es la que quieres usar para el despliegue.