Cómo solucionar docker run con error Exited (1) en Raspberry Pi
¿Por qué ocurre este error?
El código de salida 1 indica que el proceso principal del contenedor terminó con un error genérico. En Raspberry Pi (especialmente modelos con arquitectura ARM), los problemas más comunes son:
-
Incompatibilidad de arquitectura: La imagen fue construida para
amd64(x86_64) pero se ejecuta en ARM (armv7loaarch64). -
Falta de binarios compatibles: El
ENTRYPOINToCMDdel contenedor intenta ejecutar un binario incompatible con ARM. - Problemas de permisos o recursos: Falta de acceso a dispositivos (GPIO, etc.) o memoria insuficiente.
-
Espacio en disco insuficiente: Raspberry Pi suele tener particiones pequeñas para
/var/lib/docker.
🔍 Nota crítica: En tu comando
docker run --net = host, hay un espacio innecesario y problemático después del--net. Docker lo interpreta como un nombre de red literal= host, lo que causa fallos silenciosos o errores de red.
Pasos para solucionarlo (ordenados por probabilidad de éxito en Raspberry Pi)
1. Corrige el comando: elimina espacios en --net = host
# ❌ INCORRECTO (espacios alrededor del '=')
docker run --net = host -d -t myimage
# ✅ CORRECTO (sin espacios)
docker run --net host -d -t myimage
2. Verifica la arquitectura de la imagen y del host
# En tu Raspberry Pi:
uname -m # Debería mostrar: armv7l (RPi 3/4) o aarch64 (RPi 4/5)
# Verifica la arquitectura de tu imagen:
docker inspect myimage | grep -i arch
# O directamente:
docker images --format "{{.Architecture}}" myimage
Si la imagen es amd64 y tu Pi es ARM, necesitas reconstruir la imagen para ARM.
3. Ejecuta en primer plano para ver el error real
docker run --net host -it --rm myimage
# O sin -d (background) ni -t (TTY):
docker run --net host myimage
Esto mostrará el error específico (ej: standard_init_linux.go:211: exec user process caused: no such file or directory → indica binario incompatible).
4. Solución definitiva: reconstruir imagen para ARM
Si usas Dockerfile, añade:
# Al inicio del Dockerfile
FROM --platform=linux/arm/v7 arm32v7/debian:bullseye-slim # o la base que uses
# O para RPi 4/5 de 64 bits:
# FROM --platform=linux/arm64 arm64v8/debian:bullseye-slim
Y reconstruye:
docker build -t myimage .
5. Verifica espacio en disco y permisos
# Espacio en disco:
df -h /var/lib/docker
# Si es crítico (< 500 MB), limpia:
docker system prune -a --volumes
# Si el contenedor necesita acceso a hardware (GPIO, etc.):
docker run --net host --privileged -d -t myimage
Bloque de código corregido (ejemplo funcional en RPi)
# 1. Verifica arquitectura
uname -m
# 2. Corrige el comando (¡sin espacios en --net!)
docker run --net host -d -t myimage
# 3. Si persiste el error, ejecuta en foreground para debug:
docker run --net host -it --rm myimage
# 4. Si necesitas acceso a dispositivos (opcional):
docker run --net host --device /dev/gpiomem -d -t myimage
Pro-tip: Usa docker run --platform para forzar compatibilidad (si la imagen lo soporta)
# Si tu imagen es multi-plataforma (multi-arch):
docker run --platform=linux/arm/v7 --net host -d -t myimage
⚠️ Importante: Solo funciona si el repositorio de la imagen tiene manifests multi-arch (ej:
python:3.9,nginx, etc.). Si no, tendrás que reconstruir.
Resumen rápido:
- Elimina espacios en
--net host - Verifica arquitectura (
uname -mvsdocker inspect) - Ejecuta sin
-dpara ver el error - Reconstruye la imagen para ARM si es necesario
Con esto, el contenedor dejará de salir con Exited (1) en tu Raspberry Pi.
Top comments (0)