DEV Community

Erick Eduardo Ramos
Erick Eduardo Ramos

Posted on

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

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, los casos más comunes son:

  • Arquitectura incompatible: La imagen fue construida para amd64 (x86_64), pero Raspberry Pi usa arm32v7 o arm64v8.
  • Falta de dependencias del sistema: La imagen espera bibliotecas o drivers no disponibles en el entorno ARM de Raspberry Pi.
  • Problemas de permisos o recursos: Acceso denegado a dispositivos (/dev/gpiomem, /dev/vchiq, etc.) o falta de memoria.
  • Errores de sintaxis en el comando: En tu caso, el espacio en --net = host es crítico — Docker lo interpreta como un nombre de red inválido.

Pasos para solucionarlo

1. Corrige la sintaxis del comando (¡error inmediato!)

# ❌ INCORRECTO (espacios alrededor del '=')
docker run --net = host -d -t myimage

# ✅ CORRECTO (sin espacios)
docker run --net host -d -t myimage
Enter fullscreen mode Exit fullscreen mode

⚠️ Nota crítica: --net = host es interpretado por Docker como --net seguido de un argumento "= host", lo cual crea una red llamada "= host" que no existe. Esto fuerza al contenedor a fallar al inicio.

2. Verifica la arquitectura de la imagen

docker inspect myimage --format '{{.Architecture}}'
Enter fullscreen mode Exit fullscreen mode
  • Si muestra amd64, no funcionará en Raspberry Pi (a menos que uses QEMU emulación).
  • Para Raspberry Pi 3/4 (ARM 32-bit): necesitas arm32v7.
  • Para Raspberry Pi 4/5 (ARM 64-bit): necesitas arm64v8.

3. Ejecuta en primer plano para ver el error real

docker run --net host -it --rm myimage
Enter fullscreen mode Exit fullscreen mode
  • Elimina -d (background) y añade -it para ver logs en tiempo real.
  • Si el contenedor arranca y luego falla, revisa los logs:
  docker logs <container_id>
Enter fullscreen mode Exit fullscreen mode

4. Verifica permisos y dispositivos

En Raspberry Pi, muchos contenedores requieren acceso a dispositivos del sistema:

# Ejemplo para GPIO (ajustar según necesidad)
docker run --net host --privileged -v /dev:/dev -d myimage
Enter fullscreen mode Exit fullscreen mode

⚠️ --privileged es peligroso en producción. Usa --cap-add o --device para permisos específicos.


Bloque de código corregido (caso típico)

# 1. Verifica arquitectura
docker inspect myimage --format '{{.Architecture}}'

# 2. Si es incompatible, reconstruye para ARM
# En Raspberry Pi (ejecutar en el Pi):
docker build --platform linux/arm/v7 -t myimage-arm .

# 3. Ejecuta con sintaxis correcta y permisos necesarios
docker run --net host --rm -it myimage-arm
Enter fullscreen mode Exit fullscreen mode

Pro-tip: Diagnóstico rápido en Raspberry Pi

# Verifica si el contenedor se inicia pero se detiene inmediatamente
docker run --net host -d myimage && sleep 1 && docker ps -a

# Si falla, revisa logs inmediatos:
docker run --net host -it --rm myimage 2>&1 | tee /tmp/container.log
Enter fullscreen mode Exit fullscreen mode

Si el error persiste, compara:

  • Versión de Docker (docker --version)
  • Kernel (uname -a)
  • Sistema operativo (cat /etc/os-release)

🔍 Caso real común: Imágenes construidas con node:alpine (x86) fallan en Raspberry Pi. Usa node:alpine-arm32v7 o arm32v7/node:alpine.

Top comments (0)