Skip to content

🔧 Common Container Issues

🔊 "No audio device found"

Causa: Container no tiene acceso a audio hardware

Fix:

# Mount audio devices
docker run --device /dev/snd:/dev/snd myimage

# For PulseAudio
docker run -v /run/user/$(id -u)/pulse:/run/user/1000/pulse \
  -e PULSE_SERVER=unix:/run/user/1000/pulse/native \
  myimage

# For JACK
docker run -v /tmp/.jack:/tmp/.jack \
  -e JACK_NO_START_SERVER=1 \
  myimage

🔒 "Permission denied"

Causa: UID mismatch entre host y container

Fix:

# Build con UID correcto
docker build --build-arg UID=$(id -u) --build-arg GID=$(id -g) -t myimage .

# O ejecutar con usuario correcto
docker run --user $(id -u):$(id -g) myimage

# Fix permisos de volumen
docker run -v $(pwd):/workspace:rw myimage

💾 "No space left on device"

Causa: Docker storage lleno

Fix:

# Limpiar containers stopped
docker container prune

# Limpiar images sin usar
docker image prune -a

# Limpiar volumes sin usar
docker volume prune

# Limpiar todo
docker system prune -a --volumes

# Ver espacio usado
docker system df

🐌 "Build is slow"

Causa: No layer caching, orden subóptimo

Fix:

# ❌ MAL - código cambia mucho, invalida cache
COPY . /app
RUN apt-get install deps

# ✅ BIEN - deps primero, código al final
RUN apt-get install deps
COPY . /app

# ✅ Usar BuildKit
DOCKER_BUILDKIT=1 docker build .

# ✅ Cache mount para package managers
RUN --mount=type=cache,target=/var/cache/apt \
    apt-get update && apt-get install -y deps

🌐 "Cannot connect to network"

Causa: Network configuration incorrecta

Fix:

# Crear custom network
docker network create audio-net

# Ejecutar containers en misma network
docker run --network audio-net --name service1 image1
docker run --network audio-net --name service2 image2

# Containers se ven por nombre
# service1 puede hacer: ping service2

# Inspeccionar network
docker network inspect audio-net

📦 "Module not found" o "Library not found"

Causa: Dependencias no instaladas o paths incorrectos

Fix:

# Verificar qué está instalado
docker run --rm myimage dpkg -l | grep library-name

# Verificar library paths
docker run --rm myimage ldconfig -p | grep libname

# Debug interactivo
docker run --rm -it myimage /bin/bash

# Rebuild sin cache
docker build --no-cache -t myimage .

🔄 "Changes not reflected in container"

Causa: Volume mount incorrecto o cache

Fix:

# Verificar mount
docker inspect <container> | grep Mounts -A 20

# En Windows, usar path correcta
docker run -v //c/AudioDev/audio-lab:/workspace myimage

# Usar bind mount explícito
docker run --mount type=bind,source="$(pwd)",target=/workspace myimage

# Verificar dentro del container
docker exec <container> ls -la /workspace

🚫 "Container exits immediately"

Causa: Comando principal termina o error en startup

Fix:

# Ver logs
docker logs <container>

# Ver exit code
docker inspect <container> | grep ExitCode

# Override entrypoint para debug
docker run --entrypoint /bin/bash -it myimage

# Keep alive para testing
docker run -d myimage tail -f /dev/null

💥 "Out of memory"

Causa: Container consume demasiada memoria

Fix:

# Limitar memoria
docker run -m 512m myimage

# Ver uso actual
docker stats

# Ver límites
docker inspect <container> | grep Memory

# Configurar swap
docker run -m 512m --memory-swap 1g myimage

🔐 "Cannot pull image: unauthorized"

Causa: No autenticado en registry

Fix:

# Login a Docker Hub
docker login

# Login a registry privado
docker login registry.example.com

# Usar credential helper
docker-credential-desktop store

# Verificar auth
cat ~/.docker/config.json

🕐 "Build timeout"

Causa: Build tarda demasiado, timeout configurado

Fix:

# Aumentar timeout
DOCKER_CLIENT_TIMEOUT=300 COMPOSE_HTTP_TIMEOUT=300 docker build .

# Usar parallel stages
docker build --parallel .

# Multi-stage build optimizado
FROM base AS deps
RUN install-deps

FROM base AS build
COPY --from=deps /deps /deps
RUN build

📁 "Volume permission issues"

Causa: Usuario en container ≠ usuario en host

Fix:

# Opción 1: User namespace remapping
docker run --userns-remap=default myimage

# Opción 2: Ejecutar como host user
docker run --user $(id -u):$(id -g) myimage

# Opción 3: Fix permisos en entrypoint
# En entrypoint.sh:
chown -R audiodev:audiodev /workspace

# Opción 4: Use named volume con permisos
docker volume create --driver local \
  --opt type=none \
  --opt device=/path/on/host \
  --opt o=bind,uid=1000,gid=1000 \
  myvolume

🔗 Quick Reference

Problema Comando Debug
Container no arranca docker logs <container>
Network issues docker network inspect <net>
Permission denied docker exec <container> id
Disk space docker system df
Memory issues docker stats
Build cache docker builder prune
Image too large docker history <image>
Port already used docker ps + netstat -tulpn