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 Raspberry Pi usaarm32v7oarm64v8. - Falta de dependencias del sistema: La imagen intenta ejecutar un binario incompatible con el entorno del contenedor en ARM.
-
Problemas con
--net=hosten Raspberry Pi: Algunas versiones de Docker en Raspberry Pi tienen problemas conocidos con esta opción, especialmente en sistemas concgroups v2o configuraciones específicas de red. -
Falta de
--init: Si el contenedor no tiene un proceso PID 1 válido (comotini), puede fallar silenciosamente.
⚠️ Nota crítica: En tu comando
docker run --net = host, hay espacios alrededor del signo igual (--net = host). Esto es sintaxis inválida en Docker y causa que el argumento se interprete como nombre de imagen, generando un error silencioso que termina enExited (1).
Pasos para solucionarlo
1. Corrige la sintaxis del comando (¡error principal!)
# ❌ INCORRECTO (espacios alrededor del igual)
docker run --net = host -d -t myimage
# ✅ CORRECTO (sin espacios)
docker run --net=host -d -t myimage
Docker interpreta
--net = hostcomo--netseguido de dos argumentos:=yhost, lo que hace que el contenedor se inicie sin red definida y luego falle al buscar un proceso válido.
2. Verifica la arquitectura de la imagen
Ejecuta en tu Raspberry Pi:
docker inspect --format='{{.Architecture}}' myimage
- Si muestra
amd64, la imagen no es compatible con Raspberry Pi. - Debe mostrar
arm/v7oarm64.
3. Si la imagen es incompatible, reconstrúyela para ARM
Opción A: Usa --platform si estás en Docker Desktop o Docker 20.10+ (con buildx)
docker buildx build --platform linux/arm/v7 -t myimage-arm:latest .
Opción B: Usa una imagen base ARM-compatible en tu Dockerfile
# ❌ INCORRECTO (x86 por defecto)
FROM python:3.9
# ✅ CORRECTO (ARM)
FROM arm32v7/python:3.9
# o para Raspberry Pi 4 (64-bit):
FROM arm64v8/python:3.9
4. Agrega --init para evitar problemas con el PID 1
docker run --net=host --init -d -t myimage
Esto inyecta tini como PID 1, evitando que el contenedor falle si el proceso principal termina inesperadamente.
5. Ejecuta en primer plano para depurar
docker run --net=host -it --rm myimage
-
-i: interactiva (permite ver logs en tiempo real) -
-t: asigna pseudo-TTY (necesario si el proceso espera stdin) -
--rm: elimina el contenedor al salir (limpieza)
Bloque de código corregido (comando definitivo)
# Comando corregido y optimizado para Raspberry Pi
docker run --net=host --init -d -t myimage
Si persiste el error, ejecuta en modo interactivo para ver el log:
docker run --net=host --init -it --rm myimage
Pro-tip: Diagnóstico rápido
Si no estás seguro de la causa:
# 1. Verifica arquitectura del host
uname -m
# 2. Verifica arquitectura de la imagen
docker inspect --format='{{.Architecture}}' myimage
# 3. Ejecuta sin red para aislar el problema
docker run -d -t myimage && docker logs <container_id>
📌 Consejo final: En Raspberry Pi, evita
--net=hosta menos que sea estrictamente necesario. Usa--publish 8080:80en su lugar para mayor portabilidad y seguridad.
Top comments (0)