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 usaarm32v7oarm64v8. -
Falta de binarios compatibles: El
ENTRYPOINT/CMDde 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
❗ Quita
-dpara ver los logs en tiempo real y detectar el fallo inmediato.
2. Confirma la arquitectura de tu imagen
docker inspect myimage --format '{{.Architecture}}'
- Si muestra
amd64, no es compatible con Raspberry Pi. - Para Raspberry Pi 3/4 (32-bit): necesitas
armv7l(oarm32v7). - Para Raspberry Pi 4 (64-bit): necesitas
arm64(oarm64v8).
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
4. Usa el flag --net=host correctamente (sin espacios)
docker run --net=host -d -t myimage
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
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
⚠️ Importante: Si usas una imagen de Docker Hub, busca variantes con sufijo
arm32v7,arm64v8, omultiarch. Ejemplo:arm32v7/nginxen lugar denginx.
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, ...)
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)