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) y se intenta ejecutar en ARM (armv7l/aarch64) sin emulación.
  • Falta de binarios compatibles: El ENTRYPOINT o CMD del contenedor no existe o no es ejecutable en ARM.
  • Problemas de permisos en dispositivos del sistema (especialmente en Raspberry Pi OS Lite).
  • Uso incorrecto de --net=host: En algunos entornos (como Raspberry Pi OS Bullseye+), el modo host requiere privilegios adicionales.

🔍 Nota crítica: El comando que compartes tiene un error tipográfico: --net = host (con espacios alrededor del =). Docker lo interpreta como --net con valor " host" (incluyendo el espacio), lo que genera un fallo silencioso y luego el contenedor se cierra.


Pasos para solucionarlo

1. Corrige el comando: elimina los espacios en --net=host

docker run --net=host -d -t myimage
Enter fullscreen mode Exit fullscreen mode

Importante: --net = host es inválido. Docker ignora el espacio y busca una red llamada " host" (con espacio), que no existe → el contenedor falla al arrancar.


2. Verifica la arquitectura de la imagen

Ejecuta en tu Raspberry Pi:

docker images --format "{{.Repository}}:{{.Tag}}\t{{.Architecture}}"
docker inspect myimage --format '{{.Architecture}}'
Enter fullscreen mode Exit fullscreen mode

Si el resultado es amd64, necesitas una imagen ARM o usar qemu-user-static para emulación.


3. Ejecuta en primer plano para depurar

docker run --net=host -it --rm myimage
Enter fullscreen mode Exit fullscreen mode
  • -i: interactivo (permite ver logs en tiempo real).
  • -t: asigna un pseudo-TTY (necesario si el proceso espera stdin).
  • --rm: elimina el contenedor al salir (limpieza automática).

Esto mostrará el error real (ej: standard_init_linux.go:211: exec user process caused: no such file or directory → indica binario incompatible).


4. Si la imagen es amd64, construye una versión ARM

Opción A: Usa docker buildx para multiarquitectura

# Crea un builder multiplataforma
docker buildx create --use

# Construye e impulsa para ARM y x86
docker buildx build --platform linux/arm/v7,linux/amd64 -t myimage:latest --push .
Enter fullscreen mode Exit fullscreen mode

Opción B: Construye directamente en Raspberry Pi

# En la Raspberry Pi:
docker build -t myimage:arm .
Enter fullscreen mode Exit fullscreen mode

5. Verifica dependencias del sistema (Raspberry Pi OS Lite)

Si usas Raspberry Pi OS Lite (sin entorno gráfico), algunos contenedores fallan por:

  • Falta de libc6 o librerías específicas.
  • Ausencia de /dev/mem o permisos en dispositivos.

Solución rápida: ejecuta con --privileged (solo para depuración):

docker run --privileged --net=host -it --rm myimage
Enter fullscreen mode Exit fullscreen mode

⚠️ No uses --privileged en producción. Si funciona, identifica qué dispositivo falta y añade --device /dev/xxx.


Bloque de código corregido (ejemplo funcional)

# 1. Corrige el comando (sin espacios)
docker run --net=host -d -t myimage

# 2. Si falla, depura en primer plano
docker run --net=host -it --rm myimage

# 3. Si es arquitectura incompatible, usa emulación (requiere qemu)
docker run --platform linux/arm/v7 --net=host -d -t myimage
Enter fullscreen mode Exit fullscreen mode

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

# Verifica arquitectura del host
uname -m

# Verifica arquitectura de la imagen
docker inspect myimage --format '{{.Architecture}}'

# Verifica logs del último contenedor fallido
docker logs $(docker ps -ql)
Enter fullscreen mode Exit fullscreen mode

Consejo definitivo: Si la imagen es tuya, constrúyela directamente en Raspberry Pi o usa docker buildx con --platform linux/arm/v7.

Si es una imagen de terceros, busca versiones arm32v7, arm64v8 o multiarch (ej: arm32v7/python:3.9).

Top comments (0)