Compartir comentarios
Las respuestas se generan en base a la documentación.

Explorar guías prácticas de red en Docker Desktop

Esta página explica cómo configurar y utilizar las características de red, conectar contenedores a los servicios del host, trabajar detrás de proxies o VPN y solucionar problemas comunes.

Para obtener detalles sobre cómo Docker Desktop enruta el tráfico de red y la E/S de archivos entre los contenedores, la VM y el host, consulta la Descripción general de la red.

Guías prácticas de red principales

Conectar un contenedor a un servicio en el host

El host tiene una dirección IP cambiante, o ninguna si no tienes acceso a la red. Para conectarte a los servicios que se ejecutan en tu host, utiliza el nombre DNS especial:

NombreDescripción
host.docker.internalSe resuelve a la dirección IP interna de tu host
gateway.docker.internalSe resuelve a la IP de la puerta de enlace (gateway) de la VM de Docker

Ejemplo

Ejecuta un servidor HTTP simple en el puerto 8000:

$ python -m http.server 8000

Luego ejecuta un contenedor, instala curl e intenta conectarte al host utilizando los siguientes comandos:

$ docker run --rm -it alpine sh
# apk add curl
# curl http://host.docker.internal:8000
# exit

Conectarse a un contenedor desde el host

Para acceder a los servicios contenedorizados desde tu host o red local, publica los puertos con la bandera -p o --publish. Por ejemplo:

$ docker run -d -p 80:80 --name webserver nginx

Docker Desktop hace que lo que sea que se esté ejecutando en el puerto 80 del contenedor, en este caso, nginx, esté disponible en el puerto 80 de localhost.

Tip

La sintaxis de -p es PUERTO_HOST:PUERTO_CLIENTE.

Para publicar todos los puertos, utiliza la bandera -P. Por ejemplo, el siguiente comando inicia un contenedor (en modo detached) y la bandera -P publica todos los puertos expuestos del contenedor en puertos aleatorios del host.

$ docker run -d -P --name webserver nginx

Como alternativa, también puedes utilizar las redes de host para dar al contenedor acceso directo al stack de red del host.

Consulta el comando run para obtener más detalles sobre las opciones de publicación utilizadas con docker run.

Todas las conexiones entrantes pasan por el proceso de backend de Docker Desktop (com.docker.backend (Mac), com.docker.backend (Windows) o qemu (Linux)), que se encarga del reenvío de puertos a la VM. Para obtener más detalles, consulta Cómo funcionan los puertos expuestos.

Trabajar con VPN

Las redes de Docker Desktop pueden funcionar al estar conectado a una VPN.

Para lograr esto, Docker Desktop intercepta el tráfico de los contenedores y lo inyecta en el host como si se hubiera originado en la aplicación de Docker.

Para obtener detalles sobre cómo aparece este tráfico ante los firewalls del host y los sistemas de detección de endpoints, consulta Firewalls y visibilidad del endpoint.

Trabajar con proxies

Docker Desktop puede utilizar el proxy del sistema o una configuración manual. Para configurar los proxies:

  1. Dirígete a la pestaña Resources en Settings.
  2. En el menú desplegable, selecciona Proxies.
  3. Activa el interruptor Manual proxy configuration.
  4. Introduce las URL de tu proxy HTTP, HTTPS o SOCKS5.

Para obtener más detalles sobre los proxies y sus configuraciones, consulta la documentación de la configuración de proxy.

Guías prácticas de red para Mac y Windows

Puedes controlar cómo Docker gestiona las redes de los contenedores y la resolución de DNS para ofrecer un mejor soporte en diversos entornos, desde sistemas que solo admiten IPv4 hasta configuraciones dual-stack y sistemas exclusivos de IPv6. Estos ajustes ayudan a evitar tiempos de espera y problemas de conectividad causados por redes de host incompatibles o mal configuradas.

Puedes configurar los siguientes ajustes en la pestaña Network dentro de la configuración del Dashboard de Docker Desktop o, si eres administrador, con la Gestión de Ajustes (Settings Management) a través del archivo admin-settings.json o la Consola de Administración.

Note

Estos ajustes se pueden sobrescribir para cada red individual utilizando banderas de la CLI u opciones del archivo de Compose.

Modo de red predeterminado

Elige el protocolo IP predeterminado que se utilizará cuando Docker cree redes. Esto te permite alinear Docker con las capacidades de red de tu host o con los requisitos de tu organización, como exigir el acceso exclusivo a IPv6.

ModoDescripción
Dual IPv4/IPv6 (predeterminado)Admite tanto IPv4 como IPv6. Es el más flexible.
Solo IPv4Utiliza únicamente direccionamiento IPv4.
Solo IPv6Utiliza únicamente direccionamiento IPv6.

Comportamiento de la resolución de DNS

Controla cómo Docker filtra los registros DNS devueltos a los contenedores, mejorando la confiabilidad en entornos donde únicamente se admite IPv4 o IPv6. Este ajuste es especialmente útil para evitar que las aplicaciones intenten conectarse utilizando familias de IP que no están disponibles, lo que puede causar retrasos o fallos evitables.

OpciónDescripción
Automático (recomendado)Filtra automáticamente los tipos de registros no admitidos (A para IPv4, AAAA para IPv6).
Filtrar IPv4 (registros A)Bloquea las búsquedas de IPv4. Disponible únicamente en modo dual-stack.
Filtrar IPv6 (registros AAAA)Bloquea las búsquedas de IPv6. Disponible únicamente en modo dual-stack.
Sin filtradoDevuelve tanto registros A como AAAA.
Important

Cambiar el modo de red predeterminado restablece el filtro DNS a Automático.

Guías prácticas de red para Mac y Linux

Reenvío del agente SSH

Docker Desktop para Mac y Linux te permite usar el agente SSH del host dentro de un contenedor. Para lograr esto:

  1. Realiza un montaje tipo bind del socket del agente SSH añadiendo el siguiente parámetro a tu comando docker run:

    $ --mount type=bind,src=/run/host-services/ssh-auth.sock,target=/run/host-services/ssh-auth.sock
    
  2. Añade la variable de entorno SSH_AUTH_SOCK en tu contenedor:

    $ -e SSH_AUTH_SOCK="/run/host-services/ssh-auth.sock"
    

Para habilitar el agente SSH en Docker Compose, añade las siguientes banderas a tu servicio:

services:
  web:
    image: nginx:alpine
    volumes:
      - type: bind
        source: /run/host-services/ssh-auth.sock
        target: /run/host-services/ssh-auth.sock
    environment:
      - SSH_AUTH_SOCK=/run/host-services/ssh-auth.sock

Limitaciones conocidas

Cambiar las direcciones IP internas

Las direcciones IP internas utilizadas por Docker se pueden cambiar desde Settings. Después de cambiar las IP, debes restablecer el clúster de Kubernetes y salir de cualquier Swarm activo.

No hay ningún puente docker0 en el host

Debido a la forma en que están implementadas las redes en Docker Desktop, no verás una interfaz docker0 en el host. Esta interfaz se encuentra en realidad dentro de la máquina virtual.

No puedo hacer ping a mis contenedores

Docker Desktop no puede enrutar el tráfico a contenedores Linux. Sin embargo, si eres usuario de Windows, puedes hacer ping a los contenedores de Windows.

El direccionamiento IP por contenedor no es posible

Esto se debe a que la red bridge de Docker no es accesible desde el host. Sin embargo, si eres usuario de Windows, el direccionamiento IP por contenedor es posible con contenedores de Windows.