Cómo solucionar docker run con 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, los casos más comunes son:
-
Arquitectura incompatible: La imagen fue construida para
amd64(x86_64) pero el Raspberry Pi usaarm32v7oarm64v8. -
Problemas con el comando inicial: El
CMDoENTRYPOINTde la imagen falla al ejecutarse en el entorno del Pi (por ejemplo, falta una librería específica de ARM, o el binario no es compatible). - Espacio en disco insuficiente: Raspberry Pi suele tener sistemas de archivos pequeños (especialmente en tarjetas SD).
-
Uso incorrecto de
--net=host: En algunas versiones de Docker en Raspberry Pi, el modohostpuede causar fallos si no se configura correctamente.
🔍 Nota crítica: En tu comando
docker run --net = host, hay espacios alrededor del=. Esto es un error de sintaxis: Docker interpreta--netcomo una opción sin valor y=,hostcomo argumentos adicionales → el contenedor falla al iniciar.
Pasos para solucionarlo
1. Corrige la sintaxis del comando
Elimina los espacios alrededor del = en --net=host:
docker run --net=host -d -t myimage
⚠️ Esto es lo más probable que esté causando el fallo inmediato. El error de sintaxis hace que Docker no asigne la red correctamente y el contenedor falle al arrancar.
2. Verifica la arquitectura de la imagen
Ejecuta en tu Raspberry Pi:
docker inspect myimage --format '{{.Architecture}}'
- Si devuelve
amd64, la imagen no es compatible con Raspberry Pi (ARM). - Debes reconstruir la imagen para ARM o usar una versión multiarquitectura.
Solución: Construir para ARM en Raspberry Pi
Si tienes el Dockerfile, asegúrate de construirlo en el Pi:
docker build -t myimage .
O usa buildx si construyes desde otra máquina:
docker buildx build --platform linux/arm/v7 -t myimage .
3. Ejecuta en primer plano para diagnosticar
Elimina -d (modo detached) y añade -it para ver el error en tiempo real:
docker run --net=host -it myimage
Esto mostrará el mensaje de error real (ej. exec format error, segmentation fault, command not found, etc.).
4. Verifica espacio en disco
En Raspberry Pi, el espacio en /var/lib/docker suele agotarse:
df -h /var/lib/docker
Si está >90% usado, limpia contenedores y capas no usadas:
docker system prune -a --volumes
5. Verifica versiones de Docker y kernel
Algunas versiones de Docker en Raspberry Pi (especialmente las antiguas de apt) tienen bugs conocidos:
docker --version
uname -r
✅ Recomendación: Usa Docker CE oficial para Raspberry Pi (no el paquete de Debian/Raspbian):
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
Bloque de código corregido (ejemplo funcional)
# 1. Limpieza previa
docker system prune -af
# 2. Verifica arquitectura
docker inspect myimage --format '{{.Architecture}}'
# 3. Ejecuta en primer plano para debug
docker run --net=host -it myimage
# 4. Si falla, revisa logs
docker logs <container_id>
Pro-Tip: Diagnóstico rápido con strace
Si el contenedor falla silenciosamente, inyecta strace para ver qué syscall falla:
docker run --net=host -it --rm \
-v /usr/bin/strace:/usr/bin/strace:ro \
myimage \
strace -f -o /tmp/strace.log /bin/sh -c "exec your-original-cmd"
Luego revisa /tmp/strace.log para encontrar la última llamada fallida.
✅ Resultado esperado: Tras corregir la sintaxis (--net=host sin espacios) y asegurar arquitectura compatible, el contenedor arrancará sin Exited (1).
Top comments (0)