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
myimagefue construida paraamd64(x86_64), pero Raspberry Pi usaarm32v7oarm64v8. - Falta de dependencias del sistema: La imagen espera librerías o binarios específicos que no están disponibles en el entorno ARM.
-
Problemas con el comando de inicio: El
ENTRYPOINToCMDde la imagen falla al ejecutarse en ARM. - 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
2. Verifica la arquitectura de la imagen
Ejecuta en tu Raspberry Pi:
docker inspect myimage --format '{{.Architecture}}'
- Si devuelve
amd64, la imagen no es compatible con Raspberry Pi. - Debe ser
arm(32 bits) oarm64(64 bits).
3. Ejecuta el contenedor en primer plano para depurar
docker run --net host -it --rm myimage
-
-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
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 .
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
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
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'"
Luego revisa /tmp/strace.log para identificar el fallo exacto.
💡 Consejo final: Raspberry Pi 4 con 64-bit OS puede ejecutar imágenes
arm64v8nativamente. Usauname -mpara confirmar tu arquitectura real.
Top comments (0)