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 '='!
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 (
bashosh) 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
2. Verifica la versión de Docker en Raspberry Pi
Ejecuta:
docker version
Si estás usando una versión muy antigua (< 1.13), considera actualizarla:
sudo apt update && sudo apt upgrade docker.io
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
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>
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
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 "$@"
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
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)