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 este error?

El código de salida 1 indica que el proceso principal del contenedor terminó con un error genérico. En Raspberry Pi, los casos más comunes son:

  • Arquitectura incompatible: La imagen fue construida para amd64 (x86_64), pero Raspberry Pi usa arm32v7 o arm64v8.
  • Falta de binarios compatibles: El ENTRYPOINT o CMD del contenedor intenta ejecutar un binario incompatible con ARM.
  • Problemas de permisos o recursos: Especialmente en entornos headless o con configuraciones de red restrictivas.
  • Uso incorrecto de --net=host: En Raspberry Pi con ciertas versiones de Docker o sistemas operativos (como Raspberry Pi OS), puede causar fallos silenciosos.

🔍 Nota crítica: En tu comando docker run --net = host, hay espacios alrededor del =. Esto es inválido y causa un error de parsing. Docker interpreta --net como --net =, lo que probablemente falla antes de ejecutar el contenedor.


Pasos para solucionarlo

1. Corrige el comando: elimina espacios en --net=host

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

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

⚠️ Importante: En Docker CLI, los argumentos con = no deben tener espacios. --net=host es obligatorio.


2. Verifica la arquitectura de la imagen y del host

Ejecuta en tu Raspberry Pi:

# Verifica arquitectura del host
uname -m

# Verifica arquitectura de la imagen
docker inspect myimage --format '{{.Architecture}}'
Enter fullscreen mode Exit fullscreen mode

Si el resultado de docker inspect es amd64, pero tu Raspberry Pi es armv7l o aarch64, la imagen no es compatible.


3. Construye o descarga una imagen ARM-compatible

Opción A: Usa imágenes oficiales con soporte multi-arquitectura

# Ejemplo: imagen oficial de Nginx con soporte ARM
docker run --net=host -d -p 80:80 arm32v7/nginx:latest
# o para ARM64
docker run --net=host -d -p 80:80 arm64v8/nginx:latest
Enter fullscreen mode Exit fullscreen mode

Opción B: Reconstruye la imagen desde tu Raspberry Pi

# Clona tu repo y construye localmente
git clone <tu-repo>
cd <tu-proyecto>
docker build -t myimage .
Enter fullscreen mode Exit fullscreen mode

Opción C: Usa buildx para construir multi-arch desde otra máquina

docker buildx create --use
docker buildx build --platform linux/arm/v7 -t myimage:arm . --push
Enter fullscreen mode Exit fullscreen mode

4. Ejecuta en primer plano para depurar

# Elimina -d para ver logs en tiempo real
docker run --net=host -it --rm myimage
Enter fullscreen mode Exit fullscreen mode

Si ves errores como:

  • standard_init_linux.go:211: exec user process caused: no such file or directory → Falta binario o arquitectura incompatible.
  • standard_init_linux.go:228: exec user process caused: exec format error → Binario x86 ejecutándose en ARM.

5. Verifica permisos y recursos en Raspberry Pi

  • Asegúrate de que el usuario esté en el grupo docker:
  sudo usermod -aG docker $USER
  # Luego reinicia sesión o ejecuta: newgrp docker
Enter fullscreen mode Exit fullscreen mode
  • Verifica espacio en disco:
  df -h /var/lib/docker
Enter fullscreen mode Exit fullscreen mode
  • Si usas --net=host, prueba sin él primero:
  docker run -d -t myimage  # sin red host
Enter fullscreen mode Exit fullscreen mode

Bloque de código corregido (caso típico)

# 1. Verifica arquitectura
uname -m  # Debe coincidir con la arquitectura de la imagen

# 2. Ejecuta sin errores de parsing y en primer plano para depurar
docker run --net=host -it --rm myimage

# 3. Si falla por arquitectura, usa imagen ARM
docker run --net=host -d -t arm32v7/myimage  # o arm64v8/myimage
Enter fullscreen mode Exit fullscreen mode

Pro-tip: Diagnóstico rápido con docker events

Abre una terminal nueva y ejecuta:

docker events --filter event=die
Enter fullscreen mode Exit fullscreen mode

Luego ejecuta tu contenedor. Verás en tiempo real el código de salida y causa del fallo.


Solución definitiva:

Corrige --net = host--net=host y asegura compatibilidad de arquitectura. El 90% de los casos en Raspberry Pi se resuelven así.

Top comments (0)