# 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](/desktop/features/networking/#descripción-general).

## 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:

| Nombre                    | Descripción                                                             |
| ------------------------- | ----------------------------------------------------------------------- |
| `host.docker.internal`    | Se resuelve a la dirección IP interna de tu host                        |
| `gateway.docker.internal` | Se 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`:

```console
$ python -m http.server 8000
```

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

```console
$ 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:

```console
$ 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.

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

Como alternativa, también puedes utilizar las [redes de host](/engine/network/drivers/host/#docker-desktop) para dar al contenedor acceso directo al stack de red del host.

Consulta el [comando run](/reference/cli/docker/container/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](/desktop/features/networking/#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](/desktop/features/networking/#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](/desktop/settings-and-maintenance/settings/#proxies).

## 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`](/enterprise/security/hardened-desktop/settings-management/configure-json-file/#networking) o la [Consola de Administración](/enterprise/security/hardened-desktop/settings-management/configure-admin-console/).

> [!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.

| Modo                                | Descripción                                      |
| ----------------------------------- | ------------------------------------------------ |
| **Dual IPv4/IPv6 (predeterminado)** | Admite tanto IPv4 como IPv6. Es el más flexible. |
| **Solo IPv4**                       | Utiliza únicamente direccionamiento IPv4.        |
| **Solo IPv6**                       | Utiliza ú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ón                            | Descripció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 filtrado**                  | Devuelve 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`:

   ```console
   $ --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:

   ```console
   $ -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:

```yaml
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.

