DEV Community

Erick Eduardo Ramos
Erick Eduardo Ramos

Posted on

Cómo solucionar `docker run` con exit code 1 en Raspberry Pi

Cómo solucionar docker run con exit code 1 en Raspberry Pi

¿Por qué ocurre?

El error Exited (1) indica que el proceso principal del contenedor terminó con un código de error (1 = error genérico). En Raspberry Pi, los casos más comunes son:

  • Arquitectura incompatible: La imagen se construyó para amd64 (x86_64), pero Raspberry Pi usa arm32v7 o arm64v8.
  • Falta de binarios compatibles: El ENTRYPOINT/CMD de la imagen no existe o no es ejecutable en ARM.
  • Problemas de permisos o dependencias faltantes (especialmente en entornos minimalistas como Raspbian).
  • Uso incorrecto de --net=host: En versiones antiguas de Docker en Raspberry Pi, este flag puede causar fallos si no se configura correctamente.

🔍 Nota crítica: En tu comando hay un error tipográfico: --net = host (con espacios alrededor del =). Docker lo interpreta como un nombre de red literal " host", lo que puede causar fallos silenciosos o errores posteriores.


Pasos para solucionarlo

1. Verifica el código de error real

docker run --rm --net=host -t myimage
Enter fullscreen mode Exit fullscreen mode

❗ Quita -d para ver los logs en tiempo real y detectar el fallo inmediato.

2. Confirma la arquitectura de tu imagen

docker inspect myimage --format '{{.Architecture}}'
Enter fullscreen mode Exit fullscreen mode
  • Si muestra amd64, no es compatible con Raspberry Pi.
  • Para Raspberry Pi 3/4 (32-bit): necesitas armv7l (o arm32v7).
  • Para Raspberry Pi 4 (64-bit): necesitas arm64 (o arm64v8).

3. Construye la imagen para ARM (si no tienes una versión compatible)

# Opción A: Usar Docker Buildx (recomendado)
docker buildx create --use
docker buildx build --platform linux/arm/v7 -t myimage:armv7 . --push

# Opción B: Para Raspberry Pi 4 (64-bit)
docker buildx build --platform linux/arm64 -t myimage:arm64 . --push
Enter fullscreen mode Exit fullscreen mode

4. Usa el flag --net=host correctamente (sin espacios)

docker run --net=host -d -t myimage
Enter fullscreen mode Exit fullscreen mode

5. Verifica el contenedor en primer plano para debug

docker run --rm --net=host -it --entrypoint=/bin/sh myimage
# Luego ejecuta manualmente el comando que falla
Enter fullscreen mode Exit fullscreen mode

Bloque de código corregido (ejemplo funcional)

# Paso 1: Verificar arquitectura del host
uname -m

# Paso 2: Si la imagen es incompatible, reconstruir para ARM
docker buildx build --platform linux/arm/v7 -t myimage:armv7 .

# Paso 3: Ejecutar con sintaxis correcta
docker run --rm --net=host -d myimage:armv7
Enter fullscreen mode Exit fullscreen mode

⚠️ Importante: Si usas una imagen de Docker Hub, busca variantes con sufijo arm32v7, arm64v8, o multiarch. Ejemplo: arm32v7/nginx en lugar de nginx.


Pro-tip: Diagnóstico rápido con docker events

# En una terminal, ejecuta:
docker events --filter event=die

# En otra, ejecuta tu contenedor:
docker run --net=host -d myimage

# Verás en tiempo real:
# die (exitCode=1, image=myimage, ...)
Enter fullscreen mode Exit fullscreen mode

Esto te dará el código exacto de salida sin necesidad de depurar manualmente.


Solución definitiva:

Construye tu imagen para la arquitectura correcta de ARM y corrige la sintaxis de --net=host (sin espacios). El 90% de los casos Exited (1) en Raspberry Pi se resuelven así.

Top comments (0)