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
ENTRYPOINToCMDdel 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 modohostrequiere privilegios adicionales.
🔍 Nota crítica: El comando que compartes tiene un error tipográfico:
--net = host(con espacios alrededor del=). Docker lo interpreta como--netcon 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
❗ Importante:
--net = hostes 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}}'
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
-
-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 .
Opción B: Construye directamente en Raspberry Pi
# En la Raspberry Pi:
docker build -t myimage:arm .
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
libc6o librerías específicas. - Ausencia de
/dev/memo permisos en dispositivos.
Solución rápida: ejecuta con --privileged (solo para depuración):
docker run --privileged --net=host -it --rm myimage
⚠️ No uses
--privilegeden 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
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)
✅ Consejo definitivo: Si la imagen es tuya, constrúyela directamente en Raspberry Pi o usa
docker buildxcon--platform linux/arm/v7.
Si es una imagen de terceros, busca versionesarm32v7,arm64v8omultiarch(ej:arm32v7/python:3.9).
Top comments (0)