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

ComandoDescripción
docker network lsLista las redes
docker network create NOMBRECrea una red
docker network inspect NOMBREMuestra los detalles, incluidos los contenedores conectados y sus IP
docker network connect RED CONTENEDORConecta un contenedor en marcha a una red
docker network disconnect RED CONTENEDORDesconecta un contenedor de una red
docker network rm NOMBRE...Elimina redes (no puedes eliminar una mientras tenga contenedores conectados)
docker network pruneElimina todas las redes personalizadas que no usa ningún contenedor

Opciones habituales de docker network create:

OpciónDescripción
-d, --driverDriver; por defecto bridge
--subnetSubred, como 172.30.0.0/24
--gatewayIP de la puerta de enlace
--ip-rangeAsigna IP de un rango concreto dentro de la subred
--internalImpide las conexiones a redes externas
--ipv6Activa IPv6
--labelAñ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) y none (sin red).
  • Se crean appnet y fixednet, esta última con una subred indicada.
  • El contenedor api se une a appnet y recibe el nombre adicional backend mediante --network-alias. Los demás contenedores de la misma red pueden llegar a él como api o como backend.
$ 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 connect conecta también el contenedor api, ya en marcha, a fixednet, así que tiene dos interfaces de red y dos IP: 172.19.0.2 en appnet y 172.30.0.2, de la subred indicada, en fixednet. 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 ejecuta disconnect) antes de eliminar la red.

Capítulos relacionados

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