DEV Community

Erick Eduardo Ramos
Erick Eduardo Ramos

Posted on

Cómo solucionar `docker run` con `Exited (1)` en Raspberry Pi

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 usa arm32v7 o arm64v8.
  • Problemas con el comando inicial: El CMD o ENTRYPOINT de 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 modo host puede 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 --net como una opción sin valor y =, host como 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
Enter fullscreen mode Exit fullscreen mode

⚠️ 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}}'
Enter fullscreen mode Exit fullscreen mode
  • 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 .
Enter fullscreen mode Exit fullscreen mode

O usa buildx si construyes desde otra máquina:

docker buildx build --platform linux/arm/v7 -t myimage .
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

Si está >90% usado, limpia contenedores y capas no usadas:

docker system prune -a --volumes
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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>
Enter fullscreen mode Exit fullscreen mode

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"
Enter fullscreen mode Exit fullscreen mode

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)