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:

  1. Arquitectura incompatible: La imagen myimage fue construida para amd64 (x86_64), pero Raspberry Pi usa arm32v7 o arm64v8.
  2. Falta de dependencias del sistema: La imagen espera librerías o binarios específicos que no están disponibles en el entorno ARM.
  3. Problemas con el comando de inicio: El ENTRYPOINT o CMD de la imagen falla al ejecutarse en ARM.
  4. Espacio en disco insuficiente: Raspberry Pi suele tener sistemas de archivos pequeños y con poco espacio disponible.

⚠️ Nota crítica: El comando que compartes tiene un error de sintaxis: --net = host (con espacios alrededor del =) no es válido. Docker lo interpreta como un argumento inválido, lo que puede causar fallos silenciosos o comportamientos inesperados.


Pasos para solucionarlo

1. Corrige la sintaxis del comando

# ❌ Incorrecto (con espacios en `--net = host`)
docker run --net = host -d -t myimage

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

2. Verifica la arquitectura de la imagen

Ejecuta en tu Raspberry Pi:

docker inspect myimage --format '{{.Architecture}}'
Enter fullscreen mode Exit fullscreen mode
  • Si devuelve amd64, la imagen no es compatible con Raspberry Pi.
  • Debe ser arm (32 bits) o arm64 (64 bits).

3. Ejecuta el contenedor en primer plano para depurar

docker run --net host -it --rm myimage
Enter fullscreen mode Exit fullscreen mode
  • -i (interactive): permite ver la salida del contenedor.
  • -t (tty): asigna un terminal.
  • --rm: elimina el contenedor al salir (limpieza automática).

🔍 Observa los mensajes de error. Comúnmente verás:

  • exec format error: arquitectura incompatible.
  • No such file or directory: falta una librería o binario.
  • Permission denied: problemas de permisos o SELinux/AppArmor.

4. Verifica espacio en disco

df -h / /var/lib/docker
Enter fullscreen mode Exit fullscreen mode

En Raspberry Pi, /var/lib/docker suele estar montado en la partición raíz, que es pequeña. Si está >90% lleno, el contenedor no arrancará.

5. Usa una imagen compatible con ARM

Si la imagen es tuya, reconstrúyela para ARM:

# En Raspberry Pi
docker build --platform linux/arm/v7 -t myimage:arm .
Enter fullscreen mode Exit fullscreen mode

O usa imágenes oficiales con soporte multiarquitectura:

docker run --net host -d arm32v7/nginx:latest
# o
docker run --net host -d arm64v8/nginx:latest
Enter fullscreen mode Exit fullscreen mode

Bloque de código corregido

# 1. Limpia contenedores antiguos
docker rm -f mycontainer 2>/dev/null

# 2. Verifica espacio en disco
df -h / /var/lib/docker

# 3. Ejecuta en primer plano para depurar
docker run --net host -it --rm --name mycontainer myimage

# 4. Si falla por arquitectura, reconstruye para ARM
# (solo si tienes el Dockerfile)
docker build --platform linux/arm/v7 -t myimage:arm .
docker run --net host -d myimage:arm
Enter fullscreen mode Exit fullscreen mode

Pro-tip: Diagnóstico rápido con strace

Si el contenedor falla silenciosamente, inyecta strace para ver qué syscall falla:

docker run --net host -it --rm \
  --cap-add=SYS_PTRACE \
  --security-opt seccomp=unconfined \
  myimage strace -f -o /tmp/strace.log /bin/sh -c "echo 'test'"
Enter fullscreen mode Exit fullscreen mode

Luego revisa /tmp/strace.log para identificar el fallo exacto.

💡 Consejo final: Raspberry Pi 4 con 64-bit OS puede ejecutar imágenes arm64v8 nativamente. Usa uname -m para confirmar tu arquitectura real.

Top comments (0)