Cómo solucionar docker run con exit code 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 binarios compatibles: El
ENTRYPOINToCMDdel contenedor intenta ejecutar un binario compilado para otra arquitectura. - Problemas de permisos o recursos limitados en el entorno de producción (vs. VM).
-
Uso incorrecto de
--net=hostcon espacios en los argumentos:--net = hostes inválido (debe ser--net host).
⚠️ En tu comando
docker run --net = host -d -t myimage, los espacios alrededor del=hacen que Docker interprete=como el nombre del contenedor, yhostcomo el comando a ejecutar dentro del contenedor — lo cual probablemente no existe.
Pasos para solucionarlo
Paso 1: Verifica los logs del contenedor
docker ps -a # obtén el ID del contenedor con status "Exited (1)"
docker logs <container_id>
Paso 2: Ejecuta sin -d para ver errores en tiempo real
docker run --net host -it myimage
# o sin --net host si no es crítico:
docker run -it myimage
Paso 3: Verifica la arquitectura del contenedor y del host
# En tu Raspberry Pi:
uname -m
# Debería mostrar: armv7l (Raspberry Pi 3/4 32-bit) o aarch64 (Raspberry Pi 4/5 64-bit)
# Verifica la arquitectura de la imagen:
docker inspect myimage | grep -i architecture
# O mejor:
docker manifest inspect myimage | grep -A1 '"platform"'
Paso 4: Corrige el comando (¡espacios en --net!)
# ❌ INCORRECTO (con espacios):
docker run --net = host -d -t myimage
# ✅ CORRECTO:
docker run --net host -d -t myimage
Paso 5: Usa imágenes compatibles con ARM
Si la imagen no tiene soporte para ARM, debes:
- Buscar una variante
arm32v7/oarm64v8/(ej:arm32v7/python:3.9,arm64v8/nginx) - O reconstruir la imagen localmente en Raspberry Pi:
docker build -t myimage .
Bloque de código corregido
# 1. Verifica arquitectura
uname -m
# 2. Ejecuta sin daemon y sin errores de sintaxis
docker run --net host -it myimage
# 3. Si falla por arquitectura, reconstruye localmente
docker build -t myimage:latest .
# 4. O usa una imagen oficial con soporte ARM
docker run --net host -it arm32v7/debian:bullseye
Pro-tip: Diagnóstico rápido con strace
Si necesitas ver exactamente dónde falla el proceso:
# Instala strace en el contenedor (si es posible)
docker run --net host -it --rm --privileged --pid=host alpine:latest sh
apk add strace
# Luego inspecciona el proceso del contenedor (requiere más pasos avanzados)
O mejor aún: usa docker build --progress=plain y docker history para entender qué capas podrían estar causando incompatibilidades.
🔧 Consejo definitivo: En Raspberry Pi, nunca uses imágenes
amd64a menos que estés usando QEMU emulación (lento y propenso a errores). Siempre prioriza imágenes nativasarm32v7oarm64v8.
Top comments (0)