🌐 Docker Network
Tipos de redes en Docker
Docker ofrece diferentes tipos de redes para definir cómo se comunican los contenedores entre sí y con el exterior. Aquí te dejo un resumen de los principales modos de red:
🧠 1. Host
🔹 Elimina el aislamiento entre el contenedor y el host.
🔹 El contenedor utiliza directamente la red del host.
docker run --network host ...
🌉 2. Bridge (por defecto)
🔹 Crea una red virtual interna (bridge).
🔹 A cada contenedor se le asigna una IP dentro de esta red.
🔹 Los contenedores en el mismo bridge pueden comunicarse entre sí.
🔹 Es el modo más común para entornos de desarrollo.
docker run --network bridge ...
🕸️ 3. Overlay
🔹 Permite conectar contenedores que están en hosts diferentes (en un entorno Docker Swarm).
🔹 Utilizado para microservicios y clústeres distribuidos.
docker network create --driver overlay mi_red
🎭 4. MacVLAN
🔹 Asigna al contenedor una MAC address propia y una IP de la red física.
🔹 El contenedor se comporta como si fuera otro dispositivo en la red.
🔹 Ideal para cuando necesitas que el contenedor sea visible como otro equipo en la red local.
docker network create -d macvlan ...
docker network create -d macvlan ...`
📦 5. IPVlan
🔹 Similar a MacVLAN pero más eficiente.
🔹 Utiliza solo IPs y no simula direcciones MAC.
🔹 Menor sobrecarga, útil en entornos de alto rendimiento.
🚫 6. None
🔹 El contenedor no tiene acceso a ninguna red.
🔹 Útil para entornos de pruebas o análisis de malware en aislamiento total.
docker run --network none ...
🛠️ Comandos de Redes en Docker
Para ver las redes disponibles en tu entorno Docker, usa:

🔧 Crear una nueva red en Docker:
Por defecto, se crea una red del tipo bridge, pero puedes especificar el tipo de red que prefieras (por ejemplo, overlay, macvlan).
docker network create <nombre_de_la_red> # Crea una red por defecto (bridge)
docker network create --driver <tipo_de_red> <nombre_de_la_red> # Especificando el tipo de red (Ej: bridge, macvlan)

🗑️ Eliminar una red no utilizada:
docker network rm <nombre_de_la_red>
🔍 Ver detalles de una red:
Si deseas obtener más información sobre una red en particular, como los contenedores conectados a ella, usa:
docker network inspect <nombre_de_la_red>
🔗 Conectar un contenedor a una red existente:
Si quieres agregar un contenedor a una red que ya has creado:
docker network connect <nombre_de_la_red> <nombre_del_contenedor>
❌ Desconectar un contenedor de una red:
Si necesitas quitar un contenedor de una red:
docker network disconnect <nombre_de_la_red> <nombre_del_contenedor>
🧹 Limpiar redes no utilizadas:
Para eliminar redes que ya no estén en uso:
docker network prune
🌐 Mapeo de puertos
Cuando ejecutamos servicios dentro de un contenedor (como una página web en Apache), por defecto no son accesibles desde el exterior, especialmente si la red del contenedor es del tipo bridge.
👉 ¿Cómo solucionamos esto?
Mapeando puertos: esto permite redirigir el tráfico desde un puerto de tu máquina anfitriona hacia un puerto específico dentro del contenedor.
🔧 Ejemplo de Mapeo
Supongamos que tenemos una imagen de Ubuntu con Apache instalado, y queremos acceder a su página web desde nuestro navegador local.
docker run -p 33:80 <nombre_de_la_imagen>
📌 ¿Qué significa esto?
-
33→ Puerto del host (tu ordenador) -
80→ Puerto del contenedor (donde corre Apache) -
-p→ Parámetro para indicar el mapeo de puertos
💡 Ahora, si accedes a http://localhost:33 en tu navegador, verás la página del contenedor.
🕷️ Ejemplo: OWASP Juice Shop en Docker
OWASP Juice Shop es una aplicación web vulnerable creada específicamente para practicar hacking ético y pruebas de penetración web. Se ejecuta en un contenedor y se accede desde el navegador.
🚀 1. Descargar la imagen oficial:
docker pull bkimminich/juice-shop
- Ejecutar el contenedor con mapeo de puertos:
docker run -p 3000:3000 --name juice-shop bkimminich/juice-shop
