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 no es el código de error en sí, sino que estás usando una sintaxis inválida en el comando:

docker run --net = host -d -t myimage
#            ^^^^ ¡Espacios alrededor del '='!
Enter fullscreen mode Exit fullscreen mode

Docker interpreta --net = host como dos argumentos separados: --net y =, y luego host como un argumento suelto. Esto hace que Docker no reconozca la red y falle silenciosamente al iniciar el contenedor, causando el exit code 1.

Este error es especialmente común en Raspberry Pi porque:

  • El shell por defecto (bash o sh) es estricto con la sintaxis.
  • Al ejecutar en modo detached (-d), no ves los mensajes de error inmediatos.
  • La máquina virtual puede tener una configuración diferente (shell, versión de Docker, etc.) que oculta el problema.

Pasos para solucionarlo

1. Corrige la sintaxis del comando

Elimina los espacios alrededor del signo = en las opciones de Docker:

docker run --net=host -d -t myimage
#            ^^^^ Sin espacios
Enter fullscreen mode Exit fullscreen mode

2. Verifica la versión de Docker en Raspberry Pi

Ejecuta:

docker version
Enter fullscreen mode Exit fullscreen mode

Si estás usando una versión muy antigua (< 1.13), considera actualizarla:

sudo apt update && sudo apt upgrade docker.io
Enter fullscreen mode Exit fullscreen mode

3. Ejecuta en primer plano para depurar

Antes de usar -d, prueba sin él para ver el error en tiempo real:

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

Si el contenedor necesita un proceso de fondo (como un servidor), asegúrate de que el comando principal sea persistente (no termine inmediatamente).

4. Usa docker logs para confirmar

Después de ejecutar el comando corregido:

docker run --net=host -d -t myimage
docker ps -a  # Verifica el ID del contenedor
docker logs <container_id>
Enter fullscreen mode Exit fullscreen mode

Bloque de código corregido

# Comando original con error (¡NO USAR):
# docker run --net = host -d -t myimage

# Comando corregido:
docker run --net=host -d -t myimage

# Si el contenedor sigue fallando, depura así:
docker run --net=host -t myimage  # Sin -d para ver logs en vivo
Enter fullscreen mode Exit fullscreen mode

Pro-tip: Automatiza la validación de sintaxis

Crea un script de validación para evitar este error en el futuro:

#!/bin/bash
# validate-docker-run.sh
if [[ "$@" =~ "--net\s*=\s*" ]]; then
  echo "⚠️  ERROR: Elimina los espacios alrededor del '=' en --net"
  echo "Ejemplo: --net=host (¡sin espacios!)"
  exit 1
fi
docker run "$@"
Enter fullscreen mode Exit fullscreen mode

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

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

Nota crítica: En Raspberry Pi, siempre usa --net=host (sin espacios). Este es un error tan común que incluso aparece en foros oficiales de Docker. La solución es 100% sintáctica, no técnica.

Top comments (0)