Cómo solucionar docker run con Exited (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 genérico. En Raspberry Pi, los casos más comunes son:
-
Arquitectura incompatible: La imagen fue construida para
amd64(x86_64) pero Raspberry Pi usaarmhfoarm64. - Falta de dependencias del sistema: El contenedor requiere drivers o módulos del kernel no disponibles en RPi.
-
Problemas con
--net=host: En Raspberry Pi, especialmente con versiones antiguas de Docker, este modo puede fallar si hay conflictos de red o permisos. -
Falta de espacio en disco:
/var/lib/dockerpuede estar lleno, impidiendo arrancar el contenedor.
🔍 Nota crítica: En tu comando
docker run --net = host, hay espacios alrededor del=(--net = host). Esto es inválido y Docker lo interpreta como un nombre de red literal= host, lo que provoca fallos silenciosos o errores posteriores.
Pasos para solucionarlo (ordenados por probabilidad de éxito en RPi)
1. Corrige el error de sintaxis en --net=host
Elimina los espacios alrededor del =:
docker run --net=host -d -t myimage
⚠️
--net = hostes incorrecto. Docker lo interpreta como--netcon valor= host(¡una cadena inválida!).
2. Verifica la arquitectura de la imagen
Ejecuta en tu Raspberry Pi:
docker images myimage
# Busca la columna "SIZE" y "TAG" → ¿tiene sufijo :arm32v7, :arm64v8, o :latest?
Si no tiene arquitectura compatible, reconstruye la imagen con:
# En tu máquina de desarrollo (no en RPi)
docker buildx build --platform linux/arm/v7 -t myimage:arm32v7 .
# O para RPi 4 (64-bit):
docker buildx build --platform linux/arm64 -t myimage:arm64v8 .
Luego ejecuta:
docker run --net=host -d -t myimage:arm32v7
3. Ejecuta en primer plano para ver el error real
Omite -d y -t temporalmente para ver el log en tiempo real:
docker run --net=host myimage
# Si falla, verás el stack trace o mensaje de error inmediatamente
4. Usa docker logs si ya está en estado Exited (1)
docker ps -a | grep myimage # obtén el CONTAINER ID
docker logs <CONTAINER_ID>
5. Verifica espacio en disco y permisos
df -h /var/lib/docker
# Si está >90% usado:
docker system prune -a --volumes
Bloque de código corregido (ejemplo funcional en RPi)
# 1. Limpia contenedores antiguos
docker rm -f $(docker ps -aq --filter "name=myimage")
# 2. Verifica arquitectura
docker run --rm --privileged alpine/arch
# 3. Ejecuta con sintaxis correcta y modo debug
docker run --net=host --rm -it myimage:arm32v7 /bin/sh
# Si funciona en modo interactivo, el problema es el proceso inicial (PID 1)
Pro-tip: Diagnóstico rápido para Raspberry Pi
- Prueba con una imagen oficial de armhf:
docker run --rm -it arm32v7/alpine echo "¡Arquitectura OK!"
Si falla → tu Docker está mal configurado para ARM.
- Habilita logs detallados de Docker:
sudo systemctl stop docker
sudo dockerd --log-level=debug &
# Repite el `docker run` y observa el output
- Actualiza Docker en RPi (versiones < 18.09 tienen bugs críticos en ARM):
curl -sSL https://get.docker.com | sh
sudo usermod -aG docker $USER
# Reinicia sesión o ejecuta: newgrp docker
✅ Caso real documentado: En Raspberry Pi 3B+ con Raspbian Stretch, el error
Exited (1)desapareció al corregir--net = host→--net=hosty reconstruir la imagen con--platform linux/arm/v7.
Top comments (0)