DEV Community

Erick Eduardo Ramos
Erick Eduardo Ramos

Posted on

Cómo solucionar `docker run` con exit code 1 en Raspberry Pi

Cómo solucionar docker run con exit code 1 en Raspberry Pi

¿Por qué ocurre?

El error Exited (1) indica que el proceso principal del contenedor terminó con un código de error no cero. En tu caso específico, el problema está en el comando docker run --net = host. El signo igual (=) entre --net y host no es válido en Docker CLI. Docker interpreta --net = como una opción desconocida, lo que provoca que el contenedor falle al iniciar.

Esto explica por qué funciona en la VM (posiblemente con una versión más permisiva o con un shell que hace algo distinto con los espacios), pero falla en el Raspberry Pi físico (donde el shell es más estricto y Docker rechaza la opción inválida).

Pasos para solucionarlo

  1. Elimina el signo igual y los espacios innecesarios en la opción --net.
  2. Verifica que el contenedor se ejecute en primer plano para diagnosticar errores adicionales.
  3. Si persiste el problema, revisa los logs del contenedor.

Comando corregido

# ❌ INCORRECTO (con espacios y signo igual)
docker run --net = host -d -t myimage

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

⚠️ Nota crítica: En versiones recientes de Docker, --net=host no es compatible con Raspberry Pi en modo no privado (es decir, si no estás ejecutando Docker como root o sin sudo). Si sigues teniendo problemas, ejecuta con sudo:

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

Diagnóstico adicional (si el error persiste)

Si tras corregir el comando sigue fallando:

  1. Ejecuta en primer plano para ver el error en tiempo real:
   docker run --net host -it --rm myimage
Enter fullscreen mode Exit fullscreen mode

(Elimina -d y añade -it para modo interactivo y terminal)

  1. Revisa los logs del contenedor si ya se creó:
   docker logs <nombre_o_id_del_contenedor>
Enter fullscreen mode Exit fullscreen mode
  1. Verifica compatibilidad de arquitectura:

    • Si la imagen myimage fue construida para amd64 y ejecutas en Raspberry Pi (armhf o arm64), fallará silenciosamente.
    • Usa docker inspect myimage --format '{{.Architecture}}' para verificar.
    • Si es necesario, reconstruye la imagen para ARM:
     docker build --platform linux/arm/v7 -t myimage .
    

Pro-tip: Automatiza la validación del comando

Crea un script de verificación rápida:

#!/bin/bash
# validate-docker-run.sh
set -e

echo "Validando sintaxis del comando..."
if [[ "$*" =~ "--net\s*=" ]]; then
  echo "❌ ERROR: '--net' no debe tener espacios ni '='"
  echo "   Usa: --net host (sin espacios ni signo igual)"
  exit 1
fi

echo "✅ Sintaxis OK. Ejecutando..."
exec docker run "$@"
Enter fullscreen mode Exit fullscreen mode

Guarda como validate-docker-run.sh, hazlo ejecutable (chmod +x validate-docker-run.sh) y úsalo así:

./validate-docker-run.sh --net host -d -t myimage
Enter fullscreen mode Exit fullscreen mode

🔍 Dato clave: En Raspberry Pi, los errores de arquitectura y permisos son las segundas causas más comunes de Exited (1) tras errores de sintaxis en el comando. Si todo falla, ejecuta docker info y verifica que Server Version y Architecture coincidan con lo esperado para tu Raspberry Pi.

Top comments (0)