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. En Raspberry Pi, los casos más comunes son:

  • Arquitectura incompatible: La imagen fue construida para amd64 (x86_64) pero Raspberry Pi usa armhf o arm64.
  • Falta de binarios compatibles: El ENTRYPOINT/CMD del contenedor ejecuta un binario compilado para otra arquitectura.
  • Problemas de permisos o recursos: Especialmente en Raspberry Pi con sistemas minimalistas (Raspbian/Debian).
  • Sintaxis inválida en el comando: El espacio en --net = host es un error grave.

Pasos para solucionarlo

1. Corrige la sintaxis del comando

El comando original tiene un error crítico: --net = host debe escribirse sin espacios alrededor del =.

# INCORRECTO (genera error de parsing)
docker run --net = host -d -t myimage

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

2. Ejecuta en primer plano para ver el error real

Elimina -d (modo detached) y añade -it para ver el output:

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

3. Verifica la arquitectura del contenedor

Ejecuta estos comandos en tu Raspberry Pi:

# Verifica la arquitectura del host
uname -m

# Verifica la arquitectura de la imagen
docker inspect myimage | grep -i architecture
Enter fullscreen mode Exit fullscreen mode

Si la imagen es amd64 y tu Pi es armv7l o aarch64, no funcionará.

4. Usa imágenes multiarquitectura o reconstruye

Si la imagen no es compatible:

# Opción A: Busca una versión ARM de la imagen
docker pull arm32v7/nginx     # Ejemplo para ARMv7
docker pull arm64v8/nginx     # Ejemplo para ARM64

# Opción B: Reconstruye la imagen en el Pi
docker build -t myimage .
Enter fullscreen mode Exit fullscreen mode

5. Verifica dependencias críticas

En Raspberry Pi, asegúrate de tener instalados:

sudo apt update && sudo apt install -y libseccomp2 libsystemd0
Enter fullscreen mode Exit fullscreen mode

Bloque de código corregido

# Comando corregido + diagnóstico
docker run --net host -it --rm myimage

# Si falla por arquitectura, usa QEMU para emulación (lento)
docker run --platform linux/arm/v7 --net host -it --rm myimage
Enter fullscreen mode Exit fullscreen mode

⚠️ Nota crítica: Si usas --platform linux/arm/v7, necesitas habilitar QEMU en Docker:

docker run --rm --privileged multiarch/qemu-user-static --reset -p yes

Pro-tip: Diagnóstico rápido en Raspberry Pi

Crea este script de diagnóstico:

#!/bin/bash
echo "=== ARQUITECTURA DEL HOST ==="
uname -m
echo -e "\n=== ARQUITECTURA DE LA IMAGEN ==="
docker inspect myimage --format '{{.Architecture}}'
echo -e "\n=== LOGS DEL CONTENEDOR ==="
docker run --net host -d myimage
sleep 2
docker logs $(docker ps -lq)
Enter fullscreen mode Exit fullscreen mode

Este script te dará la causa raíz en menos de 30 segundos.

Top comments (0)