Contenido
Tutorial de docker network: crea redes, conecta contenedores y usa alias
docker network gestiona las redes de Docker. Para el concepto de red y las diferencias entre la red por defecto y las personalizadas, consulta Redes y comunicación entre contenedores.
Subcomandos
| Comando | Descripción |
|---|---|
docker network ls | Lista las redes |
docker network create NOMBRE | Crea una red |
docker network inspect NOMBRE | Muestra los detalles, incluidos los contenedores conectados y sus IP |
docker network connect RED CONTENEDOR | Conecta un contenedor en marcha a una red |
docker network disconnect RED CONTENEDOR | Desconecta un contenedor de una red |
docker network rm NOMBRE... | Elimina redes (no puedes eliminar una mientras tenga contenedores conectados) |
docker network prune | Elimina todas las redes personalizadas que no usa ningún contenedor |
Opciones habituales de docker network create:
| Opción | Descripción |
|---|---|
-d, --driver | Driver; por defecto bridge |
--subnet | Subred, como 172.30.0.0/24 |
--gateway | IP de la puerta de enlace |
--ip-range | Asigna IP de un rango concreto dentro de la subred |
--internal | Impide las conexiones a redes externas |
--ipv6 | Activa IPv6 |
--label | Añade una etiqueta |
Opciones habituales de docker network connect: --alias ALIAS e --ip IP_FIJA.
Ejemplos
$ docker network ls
NETWORK ID NAME DRIVER SCOPE
58a492b7c501 bridge bridge local
720ed2121dc4 host host local
07184d7358b0 none null local
$ docker network create appnet
c94640ca44aae05529e21bfe93c1fd957f70ca0d4bcc40209e91aa434dbc65e4
$ docker network create --subnet 172.30.0.0/24 fixednet
320f2c205537c3957304a23459143038a39e3b3a9323edc3bb5cec13688a1cf5
$ docker run -d --name api --network appnet --network-alias backend nginx:1.30-alpine
a40d4c075b88d806529bc6b58f9e1a90f6bc918eed0af6a852e3e8983f3e8e7a
$ docker run --rm --network appnet alpine:3.23 sh -c "ping -c1 -W1 api >/dev/null && echo api ok; ping -c1 -W1 backend >/dev/null && echo backend ok"
api ok
backend ok
$ docker network inspect -f "{{range .Containers}}{{.Name}} {{.IPv4Address}}{{end}}" appnet
api 172.19.0.2/16
- Las tres redes por defecto son
bridge(la predeterminada),host(usa directamente la red del host) ynone(sin red). - Se crean
appnetyfixednet, esta última con una subred indicada. - El contenedor
apise une aappnety recibe el nombre adicionalbackendmediante--network-alias. Los demás contenedores de la misma red pueden llegar a él comoapio comobackend.
$ docker network connect fixednet api
$ docker inspect -f "{{range \$k, \$v := .NetworkSettings.Networks}}{{\$k}}={{\$v.IPAddress}} {{end}}" api
appnet=172.19.0.2 fixednet=172.30.0.2
$ docker network disconnect fixednet api
$ docker network rm appnet
Error response from daemon: error while removing network: network appnet has active endpoints (name:"api" id:"df7a1c38176a")
exit status 1
$ docker rm -f api
api
$ docker network rm appnet fixednet
appnet
fixednet
network connectconecta también el contenedorapi, ya en marcha, afixednet, así que tiene dos interfaces de red y dos IP:172.19.0.2enappnety172.30.0.2, de la subred indicada, enfixednet. Así un contenedor puede comunicarse con dos grupos de servicios a la vez, como un proxy inverso conectado a una red de frontend y a otra de backend.- Eliminar una red con contenedores conectados da un error:
network appnet has active endpoints. Elimina el contenedor (o ejecutadisconnect) antes de eliminar la red.
Capítulos relacionados
- Redes y comunicación entre contenedores
- Nginx y proxy inverso
- Sintaxis de compose.yaml:
networksen Compose
Ejercicios
Ejercicio: crea una red --internal llamada private, inicia un contenedor conectado a ella y comprueba que no puede conectarse al exterior (por ejemplo, ejecuta ping -c1 1.1.1.1).
Respuesta
docker network create --internal private
docker run --rm --network private alpine:3.23 ping -c1 -W2 1.1.1.1
La salida probada es ping: sendto: Network unreachable: el contenedor no tiene ruta hacia el exterior. Al terminar, ejecuta docker network rm private.
Preguntas frecuentes
¿Por qué no puedo conectarme por nombre de contenedor en la red por defecto?
La red por defecto bridge no ofrece resolución de nombres. Las redes personalizadas (docker network create) y las que crea Compose resuelven automáticamente la IP a partir del nombre del contenedor y del servicio.
¿Para qué sirve --network-alias?
Da al contenedor un nombre adicional en una red. Por ejemplo, el contenedor puede llamarse api-v2 mientras los demás servicios siguen conectándose a backend; o varios contenedores pueden usar el mismo alias para repartir peticiones de forma sencilla.
¿Qué es una red --internal?
En una red creada con --internal, los contenedores pueden comunicarse entre sí, pero no pueden conectarse a redes externas. Es adecuada para servicios como bases de datos que no necesitan acceso a internet.
Actualizado 14 de octubre de 2026