DEV Community

Erick Eduardo Ramos
Erick Eduardo Ramos

Posted on

Cómo solucionar `Code exited (1)` en contenedores Docker en Raspberry Pi

Cómo solucionar Code exited (1) en contenedores Docker en Raspberry Pi

¿Por qué ocurre este error?

El código de salida 1 indica que el proceso principal del contenedor (PID 1) terminó con un error. En Raspberry Pi, este problema es muy frecuente cuando:

  • El contenedor se ejecuta en segundo plano (-d) pero el proceso principal termina inmediatamente (por ejemplo, un script que no tiene un proceso de larga duración).
  • Hay incompatibilidad de arquitectura (ej. imagen construida para amd64 ejecutándose en ARM de Raspberry Pi).
  • Falta un comando de inicio válido (CMD/ENTRYPOINT mal definido en el Dockerfile).
  • El flag --net=host está mal escrito: --net = host (con espacios) es inválido → Docker lo interpreta como --net con valor " = host" (una red inexistente), causando fallo inmediato.

🔍 Diagnóstico clave: El error está en el comando docker run --net = host. Los espacios alrededor del = son inválidos. Docker lo interpreta como --net con valor " = host", lo cual no es una red válida → el contenedor falla al iniciar.


Pasos para solucionarlo

1. Corrige la sintaxis del comando --net

❌ Incorrecto (con espacios):

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

✅ Correcto (sin espacios):

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

⚠️ En Docker, los flags con valores (--flag value) no deben tener espacios alrededor del = si usas la forma --flag=value. Si usas --flag value, no uses = en absoluto.

2. Verifica la arquitectura de la imagen

Ejecuta en tu Raspberry Pi:

docker info | grep "Architecture"
Enter fullscreen mode Exit fullscreen mode

Debería mostrar armv7l (Raspberry Pi 3/4) o aarch64 (Raspberry Pi 4/5 con OS de 64 bits).

Si tu imagen myimage fue construida para amd64, no funcionará en ARM. Solución:

  • Re-construye la imagen para ARM:
  docker build --platform linux/arm/v7 -t myimage .
Enter fullscreen mode Exit fullscreen mode

o para Pi 4/5 de 64 bits:

  docker build --platform linux/arm64 -t myimage .
Enter fullscreen mode Exit fullscreen mode
  • O usa --platform en el run (si el emulador QEMU está instalado):
  docker run --platform linux/arm/v7 --net host -d -t myimage
Enter fullscreen mode Exit fullscreen mode

3. Ejecuta en primer plano para depurar

Elimina -d para ver los logs en tiempo real:

docker run --net host -it myimage
Enter fullscreen mode Exit fullscreen mode

Si falla, verás el mensaje de error directamente (ej. sh: 1: myapp: not found).


Bloque de código corregido

# Comando corregido (sin espacios en --net)
docker run --net host -d -t myimage

# Verifica logs si sigue fallando
docker logs <container_id>

# Si necesitas depurar en primer plano
docker run --net host -it myimage

# Si la imagen no es para ARM, reconstruye con plataforma explícita
docker build --platform linux/arm/v7 -t myimage .
Enter fullscreen mode Exit fullscreen mode

Pro-tip: Evita este error para siempre

  1. Valida siempre los comandos Docker antes de ejecutarlos:
   docker run --help | grep -A2 "net"
Enter fullscreen mode Exit fullscreen mode

Verás que la sintaxis es --net [NETWORK], sin =.

  1. Usa docker inspect para diagnosticar contenedores exitosos:
   docker inspect <container_id> | grep -A5 "State"
Enter fullscreen mode Exit fullscreen mode

Busca "ExitCode": 1 y "Error": "...".

  1. En Raspberry Pi, siempre especifica --platform al construir imágenes:
   # En tu Dockerfile, asegura que el base image sea para ARM
   FROM --platform=linux/arm/v7 ubuntu:20.04
Enter fullscreen mode Exit fullscreen mode

✅ Resultado esperado: Tras corregir --net host (sin espacios), el contenedor iniciará correctamente y permanecerá en ejecución si su proceso principal es de larga duración (ej. un servidor web, un daemon, etc.). Si el contenedor sigue saliendo, revisa los logs con docker logs.

Top comments (0)