# docker network create

**Descripción:** Crea una red

**Uso:** `docker network create [OPTIONS] NETWORK`










## Descripción

Crea una red nueva. El `DRIVER` acepta `bridge` u `overlay`, que son los
controladores de red integrados. Si has instalado un controlador de red de terceros
o uno personalizado propio, también puedes especificar ese `DRIVER` aquí. Si no especificas la
opción `--driver`, el comando crea automáticamente una red `bridge` para ti.
Cuando instalas Docker Engine, se crea una red `bridge` automáticamente. Esta
red corresponde al puente `docker0` en el que tradicionalmente se ha basado Docker Engine.
Cuando inicias un contenedor nuevo con `docker run`, este se conecta automáticamente a
esta red puente. No puedes eliminar esta red puente por defecto, pero puedes
crear nuevas usando el comando `network create`.

```console
$ docker network create -d bridge my-bridge-network
```

Las redes puente (bridge) son redes aisladas en una única instalación de Docker Engine. Si
deseas crear una red que abarque varios hosts de Docker que ejecuten Docker
Engine, debes habilitar el modo Swarm y crear una red `overlay`. Para leer más
sobre redes overlay con el modo Swarm, consulta ["*usar redes overlay*"](/network/overlay/).

Una vez habilitado el modo Swarm, puedes crear una red overlay con alcance de Swarm:

```console
$ docker network create --scope=swarm --attachable -d overlay my-multihost-network
```

Por defecto, las redes con alcance de Swarm no permiten que se conecten contenedores iniciados
manualmente. Esta restricción se añade para evitar que alguien con acceso a
un nodo que no es administrador en el clúster Swarm ejecute un contenedor que pueda
acceder a la pila de red de un servicio Swarm.

La opción `--attachable` utilizada en el ejemplo anterior deshabilita esta restricción
y permite que tanto los servicios de Swarm como los contenedores iniciados manualmente se conecten a
la red overlay.

Los nombres de red deben ser únicos. El demonio de Docker intenta identificar conflictos de
nombres, pero esto no está garantizado. Es responsabilidad del usuario evitar
conflictos de nombres.

### Limitaciones de las redes overlay

Debes crear redes overlay con bloques `/24` (por defecto), lo que te limita
a 256 direcciones IP, cuando creas redes utilizando el modo de endpoint basado en VIP por defecto.
Esta recomendación aborda las [limitaciones con el modo swarm](https://github.com/moby/moby/issues/30820). Si
necesitas más de 256 direcciones IP, no aumentes el tamaño del bloque IP. Puedes
usar el modo de endpoint `dnsrr` con un balanceador de carga externo o usar múltiples
redes overlay más pequeñas. Consulta [Configurar descubrimiento de servicios](/engine/swarm/networking/#configure-service-discovery)
para obtener más información sobre los diferentes modos de endpoint.


## Opciones

| Opción                                                        | Predeterminado                                        | Descripción                                                                                                                                    |
| ------------------------------------------------------------- | ----------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|  | `--attachable` |  | API 1.25+ Habilita la conexión manual de contenedores |

 | `--aux-address` |  |  Direcciones IPv4 o IPv6 auxiliares utilizadas por el controlador de red |

 | `--config-from` |  | API 1.30+ La red desde la cual copiar la configuración |

 | `--config-only` |  | API 1.30+ Crea una red solo de configuración |

 | `-d`, `--driver` | `bridge` |  Controlador (driver) para gestionar la red |

 | `--gateway` |  |  Puerta de enlace (gateway) IPv4 o IPv6 para la subred principal |

 | `--ingress` |  | API 1.29+ Crea una red de malla de enrutamiento (routing-mesh) Swarm |

 | `--internal` |  |  Restringe el acceso externo a la red |

 | `--ip-range` |  |  Asigna IPs de contenedores a partir de un subrango |

 | `--ipam-driver` |  |  Controlador de gestión de direcciones IP (IPAM) |

 | `--ipam-opt` |  |  Establece opciones específicas del controlador IPAM |

 | `--ipv4` | `true` |  Habilita o deshabilita la asignación de direcciones IPv4 |

 | `--ipv6` |  |  Habilita o deshabilita la asignación de direcciones IPv6 |

 | `--label` |  |  Establece metadatos en una red |

 | `-o`, `--opt` |  |  Establece opciones específicas del controlador |

 | `--scope` |  | API 1.30+ Controla el alcance (scope) de la red |

 | `--subnet` |  |  Subred en formato CIDR que representa un segmento de red |




## Ejemplos


### Conectar contenedores

Al iniciar un contenedor, usa la opción `--network` para conectarlo a una red.
Este ejemplo añade el contenedor `busybox` a la red `mynet`:

```console
$ docker run -itd --network=mynet busybox
```

Si deseas añadir un contenedor a una red después de que el contenedor ya esté
en ejecución, usa el subcomando `docker network connect`.

Puedes conectar múltiples contenedores a la misma red. Una vez conectados, los
contenedores pueden comunicarse utilizando únicamente la dirección IP o el nombre de otro contenedor.
Para redes `overlay` o complementos personalizados que admiten conectividad multi-host,
los contenedores conectados a la misma red multi-host pero lanzados desde diferentes
daemons también pueden comunicarse de esta manera.

Puedes desconectar un contenedor de una red usando el comando `docker network disconnect`.

### Especificar opciones avanzadas

Al crear una red, Docker Engine crea una subred que no se superpone
para la red por defecto. Esta subred no es una subdivisión de una red existente.
Es puramente para fines de direccionamiento IP. Puedes anular este valor por defecto
y especificar los valores de la subred directamente usando la opción `--subnet`. En una
red `bridge` solo puedes crear una única subred:

```console
$ docker network create --driver=bridge --subnet=192.168.0.0/16 br0
```

Adicionalmente, también puedes especificar las opciones `--gateway`, `--ip-range` y `--aux-address`.

```console
$ docker network create \
  --driver=bridge \
  --subnet=172.28.0.0/16 \
  --ip-range=172.28.5.0/24 \
  --gateway=172.28.5.254 \
  br0
```

Si omites la opción `--gateway`, Docker Engine selecciona una por ti dentro de
un grupo preferido. Para redes `overlay` y para complementos de controladores de red que
lo admitan, puedes crear múltiples subredes. Este ejemplo utiliza dos máscaras de subred
`/25` para cumplir con la guía actual de no tener más de 256 IPs en
una sola red overlay. Cada una de las subredes tiene 126 direcciones utilizables.

```console
$ docker network create -d overlay \
  --subnet=192.168.10.0/25 \
  --subnet=192.168.20.0/25 \
  --gateway=192.168.10.100 \
  --gateway=192.168.20.100 \
  --aux-address="my-router=192.168.10.5" --aux-address="my-switch=192.168.10.6" \
  --aux-address="my-printer=192.168.20.5" --aux-address="my-nas=192.168.20.6" \
  my-multihost-network
```

Asegúrate de que tus subredes no se superpongan. Si lo hacen, la creación de la red
falla y Docker Engine devuelve un error.

### Opciones del controlador Bridge

Al crear una red `bridge` personalizada, se pueden pasar las siguientes opciones adicionales.
Algunas de ellas tienen opciones equivalentes que se pueden usar en la línea de comandos de dockerd
o en `daemon.json` para configurar el puente por defecto, `docker0`:

| Opción de creación de red                        | Opción del demonio para `docker0` | Descripción                                           |
|--------------------------------------------------|-----------------------------------|-------------------------------------------------------|
| `com.docker.network.bridge.name`                 | -                                 | Nombre del puente a usar al crear el puente Linux     |
| `com.docker.network.bridge.enable_ip_masquerade` | `--ip-masq`                       | Habilita el enmascaramiento de IP                     |
| `com.docker.network.bridge.enable_icc`           | `--icc`                           | Habilita o deshabilita la conectividad inter-contenedor|
| `com.docker.network.bridge.host_binding_ipv4`    | `--ip`                            | IP por defecto al enlazar puertos de contenedores     |
| `com.docker.network.driver.mtu`                  | `--mtu`                           | Establece la MTU de red de los contenedores           |
| `com.docker.network.container_iface_prefix`      | -                                 | Establece un prefijo personalizado para interfaces    |

Los siguientes argumentos se pueden pasar a `docker network create` para cualquier
controlador de red, nuevamente con sus equivalentes aproximados a las opciones del demonio de Docker
utilizadas para el puente `docker0`:

| Opción de creación de red | Opción del demonio para `docker0` | Descripción                                         |
|---------------------------|-----------------------------------|-----------------------------------------------------|
| `--gateway`               | -                                 | Puerta de enlace IPv4 o IPv6 para la subred principal|
| `--ip-range`              | `--fixed-cidr`, `--fixed-cidr-v6` | Asigna direcciones IP desde un rango                |
| `--internal`              | -                                 | Restringe el acceso externo a la red                |
| `--ipv4`                  | -                                 | Habilita o deshabilita la asignación de direcciones IPv4|
| `--ipv6`              | `--ipv6`                          | Habilita o deshabilita la asignación de direcciones IPv6|
| `--subnet`                | `--bip`, `--bip6`                 | Subnet para la red                                  |

Por ejemplo, usemos las opciones `-o` o `--opt` para especificar un enlace de dirección IP
al publicar puertos:

```console
$ docker network create \
    -o "com.docker.network.bridge.host_binding_ipv4"="172.19.0.1" \
    simple-network
```

### Modo de red interna (--internal) {#internal}

Los contenedores en una red interna pueden comunicarse entre sí, pero no
con ninguna otra red, ya que no se configura ninguna ruta por defecto y se establecen reglas de firewall
para descartar todo el tráfico hacia o desde otras redes. La comunicación con
la dirección IP de la puerta de enlace (y, por lo tanto, los servicios del host configurados adecuadamente) es
posible, y el host puede comunicarse directamente con cualquier IP de contenedor.

Por defecto, cuando conectas un contenedor a una red `overlay`, Docker también
conecta una red puente a ella para proporcionar conectividad externa. Si deseas
crear una red `overlay` aislada externamente, puedes especificar la opción
`--internal`.

### Modo de red de entrada (--ingress) {#ingress}

Puedes crear la red que se utilizará para proporcionar la malla de enrutamiento (routing-mesh) en el
clúster Swarm. Lo haces especificando `--ingress` al crear la red. Solo
se puede crear una red ingress a la vez. La red se puede eliminar únicamente
si ningún servicio depende de ella. Cualquier opción disponible al crear una red overlay
también está disponible al crear la red ingress, a excepción de la opción `--attachable`.

```console
$ docker network create -d overlay \
  --subnet=10.11.0.0/16 \
  --ingress \
  --opt com.docker.network.driver.mtu=9216 \
  --opt encrypted=true \
  my-ingress-network
```

### Ejecutar servicios en redes predefinidas

Puedes crear servicios en las redes predefinidas de Docker `bridge` y `host`.

```console
$ docker service create --name my-service \
  --network host \
  --replicas 2 \
  busybox top
```

### Redes Swarm con controladores de alcance local

Puedes crear una red Swarm con controladores de red de alcance local. Lo haces
promoviendo el alcance de la red a `swarm` durante la creación de la red.
Luego podrás usar esta red al crear servicios.

```console
$ docker network create -d bridge \
  --scope swarm \
  --attachable \
  swarm-network
```

Para los controladores de red que proporcionan conectividad entre hosts (p. ej., macvlan), si
se necesitan configuraciones específicas de nodo para implementar la red en cada
host, proporcionarás esa configuración a través de una red que sea solo de configuración.
Cuando crees la red con alcance Swarm, especificarás el nombre de la
red que contiene la configuración.

```console
node1$ docker network create --config-only --subnet 192.168.100.0/24 --gateway 192.168.100.115 mv-config
node2$ docker network create --config-only --subnet 192.168.200.0/24 --gateway 192.168.200.202 mv-config
node1$ docker network create -d macvlan --scope swarm --config-from mv-config --attachable swarm-network
```



