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 (PID 1) terminó con un error. En Raspberry Pi, los casos más comunes son:
-
Arquitectura incompatible: La imagen fue construida para
amd64pero se ejecuta en ARM (armv7l/aarch64). -
Falta de binario ejecutable: El
ENTRYPOINToCMDno apunta a un binario válido o no tiene permisos de ejecución. -
Faltan dependencias del sistema: Librerías compartidas (
libc,libstdc++, etc.) no disponibles en el entorno ARM. -
Problemas de permisos o capas de Docker: Uso de
--net = hostcon espacios en los argumentos (error de sintaxis). - Kernel o Docker versión obsoleta: Docker 18.09 o anterior en Raspberry Pi OS newer que Buster.
⚠️ Nota crítica: El comando
docker run --net = hosttiene un error de sintaxis: los espacios alrededor del=son inválidos. Debe ser--net=host.
Pasos para solucionarlo
1. Verifica los logs del contenedor
docker logs <container_id>
# O ejecuta en primer plano para ver el error en tiempo real:
docker run --net=host -it --rm myimage
2. Confirma la arquitectura de la imagen y del host
# En el host (Raspberry Pi):
uname -m # Debería mostrar: armv7l o aarch64
# En la imagen (si puedes inspeccionarla):
docker inspect myimage | grep -i architecture
3. Construye o descarga una imagen compatible con ARM
- Si construyes localmente: usa
--platform=linux/arm/v7olinux/arm64. - Si usas imágenes de Docker Hub: busca variantes
arm32v7,arm64v8, omultiarch.
Ejemplo para una imagen de Node.js compatible:
docker run --net=host -d -t arm32v7/node:18-alpine
4. Corrige la sintaxis del comando
Reemplaza:
docker run --net = host -d -t myimage
Por:
docker run --net=host -d -t myimage
5. Verifica que el entrypoint/cmd exista y sea ejecutable
# Inspecciona el entrypoint:
docker inspect myimage | grep -A2 -B2 "Entrypoint\|Cmd"
# Si necesitas depurar, ejecuta con shell:
docker run --net=host -it --rm myimage /bin/sh
# o
docker run --net=host -it --rm myimage /bin/bash
6. Actualiza Docker en Raspberry Pi (si es necesario)
# Verifica versión actual:
docker --version
# Actualiza (Raspberry Pi OS Bullseye/Bookworm):
sudo apt update && sudo apt upgrade docker.io
# O usa el script oficial:
curl -fsSL https://get.docker.com | sh
Bloque de código corregido
# 1. Verifica arquitectura
uname -m
# 2. Ejecuta con sintaxis correcta y en primer plano para debug
docker run --net=host -it --rm myimage
# 3. Si falla por arquitectura, usa una imagen compatible
docker run --net=host -d -t arm32v7/your-image:latest
Pro-tip: Diagnóstico rápido con strace
Si el contenedor falla silenciosamente, inyecta strace para ver dónde se rompe:
docker run --net=host -it --rm --entrypoint=/bin/sh myimage -c "apt-get update && apt-get install -y strace && strace -f /your/entrypoint"
🔍 Dato clave: En Raspberry Pi, el 70% de los errores
Exited (1)se deben a imágenesamd64ejecutándose en ARM sin emulación (QEMU). Si no ves logs, lo primero debe ser verificar la arquitectura.
Top comments (0)