Desarrolladores

No se puede acceder a un contenedor Docker desde el Mac

Docker en un Mac ejecuta los contenedores en una máquina virtual Linux. Para acceder a un contenedor desde macOS, normalmente publicas un puerto en localhost.

Se aplica a: Docker Desktop y OrbStack en las versiones actuales de macOS.Revisado: 29 de octubre de 2026

Síntomas

  • curl localhost:8080 falla, pero el servicio funciona dentro del contenedor.
  • No puedes hacer ping ni conectarte a la dirección IP del contenedor.
  • No aparece ninguna interfaz docker0 en el Mac.
  • El servicio funciona en Linux pero no en el Mac.

Causas probables

  • El puerto no está publicado. Sin -p, Docker Desktop no reenvía el puerto al Mac.
  • IP de contenedores en Docker Desktop. La documentación de Docker para Docker Desktop dice que su red bridge no es accesible desde el host.
  • El servicio escucha en 127.0.0.1 dentro del contenedor. Entonces solo el propio contenedor puede conectarse a él.
  • Una pareja de puertos incorrecta. En -p 8080:80, 8080 es el puerto del Mac y 80 es el puerto del contenedor.

Cómo comprobarlo

  1. Muestra los contenedores en ejecución y sus puertos publicados.

    docker ps

    Salida La columna PORTS muestra parejas como 0.0.0.0:8080->80/tcp. Si no hay pareja, el puerto no está publicado.

  2. Muestra los puertos publicados de un contenedor.

    docker port my-container
  3. Prueba el servicio desde dentro del contenedor, si la imagen incluye wget. Si hay respuesta, el servicio funciona.

    docker exec my-container wget -qO- http://localhost:80
  4. Mira qué proceso del Mac escucha en el puerto.

    lsof -nP -iTCP:8080 -sTCP:LISTEN

Cómo solucionarlo

  1. Inicia el contenedor con un puerto publicado. El primer número es el puerto del Mac.

    docker run -d -p 8080:80 nginx
  2. Conéctate desde el Mac con localhost y el puerto del Mac.

    curl http://localhost:8080
  3. Haz que el servicio del contenedor escuche en 0.0.0.0, no en 127.0.0.1. Consulta su documentación para ver el ajuste.

  4. Si el puerto del Mac está en uso, elige otro puerto del Mac. Consulta Puerto ya en uso en un Mac.

  5. Con OrbStack, también puedes usar la dirección IP del contenedor o su nombre container-name.orb.local.

Con Kilobat

  1. Las comprobaciones de Kilobat se ejecutan en el Mac. Usa --context container cuando el código que falla se ejecuta en un contenedor. El informe termina entonces con un comando para ejecutar allí.

    kilobat why http://localhost:8080 --context container

Preguntas

¿Por qué no puedo hacer ping a un contenedor en Docker Desktop?

La documentación de Docker dice que Docker Desktop no puede enrutar tráfico desde el Mac hacia los contenedores Linux. Publica un puerto en su lugar.

¿OrbStack funciona de otra forma?

Sí. La documentación de OrbStack dice que puedes conectarte a los contenedores desde el Mac por dirección IP y por nombres .orb.local.

Fuentes

Fuentes revisadas el 29 de octubre de 2026. Las páginas man son las que se instalan con macOS; abre una con man <name> en Terminal.