Introducción
Las redes de Docker son un aspecto fundamental de la orquestación de contenedores, ya que permiten que estos se comuniquen entre sí y con redes externas. Este desafío te guiará a través de los conceptos esenciales de las redes de Docker, desde la creación y gestión de redes hasta la conexión y desconexión de contenedores.
Al completar este desafío, obtendrás experiencia práctica con los comandos de red de Docker y comprenderás cómo establecer la comunicación entre contenedores. Estas habilidades son cruciales para desarrollar y desplegar aplicaciones multi-contenedor en entornos Docker.
¡Sumerjámonos en el mundo de las redes de Docker!
Crear una Red
En este paso, crearás tu primera red de Docker. Esta es la base para conectar contenedores y permitir la comunicación entre ellos.
Tareas
- Crea una nueva red de tipo bridge llamada
my-networkutilizando el comandodocker network create. - Verifica que la red se haya creado listando todas las redes de Docker.
Requisitos
- Realiza todas las operaciones en el directorio
/home/labex/project. - Utiliza el controlador bridge por defecto al crear la red.
Ejemplo
Después de completar este paso, deberías ver my-network en la lista al ejecutar docker network ls:
NETWORK ID NAME DRIVER SCOPE
abcdef123456 my-network bridge local
Lanzar Contenedores en la Red
Ahora que tenemos una red, lancemos algunos contenedores y conectémoslos a ella. Este paso demostrará cómo iniciar contenedores dentro de una red específica, un concepto clave en el ecosistema de Docker.
Tareas
- Inicia un contenedor llamado
container1usando la imagennginxy conéctalo amy-network. - Inicia otro contenedor llamado
container2usando la imagenhttpdy conéctalo amy-network. - Verifica que ambos contenedores estén en ejecución y conectados a
my-network.
Requisitos
- Realiza todas las operaciones en el directorio
/home/labex/project. - Utiliza la bandera
--networkal iniciar los contenedores para conectarlos amy-network. - Ejecuta ambos contenedores en modo desatendido (detached).
Ejemplo
Al finalizar este paso, deberías ver ambos contenedores en ejecución al usar docker ps:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
abcdef123456 nginx "..." 2 minutes ago Up 2 minutes 80/tcp container1
fedcba654321 httpd "..." 2 minutes ago Up 2 minutes 80/tcp container2
Probar la Conectividad
En este paso, verificarás que los contenedores pueden comunicarse entre sí a través de la red que creaste. Esta es una prueba crucial para asegurar que tu configuración de red funciona según lo previsto.
Tareas
- Utiliza el comando
docker execpara abrir una terminal encontainer1. - Desde el interior de
container1, utiliza el comandocurlpara acceder acontainer2mediante su nombre de contenedor.
Requisitos
- Realiza todas las operaciones en el directorio
/home/labex/project. - Utiliza
container2como nombre de host en tu comandocurl. - El comando
curldebe acceder al puerto HTTP por defecto (80) encontainer2.
Ejemplo
Tras ejecutar el comando curl desde container1, deberías ver el contenido de la página por defecto del servidor Apache HTTP:
<!DOCTYPE html>
<html><body><h1>It works!</h1></body></html>
Conectar un Contenedor a Múltiples Redes
En este paso, aprenderás cómo conectar un solo contenedor a varias redes. Este es un concepto más avanzado que resulta útil para crear topologías de red complejas o para migrar servicios gradualmente entre redes.
Tareas
- Crea una nueva red de tipo bridge llamada
my-network2. - Conecta
container2amy-network2manteniendo su conexión actual conmy-network. - Verifica que
container2esté ahora conectado a ambas redes.
Requisitos
- Realiza todas las operaciones en el directorio
/home/labex/project. - Utiliza el comando
docker network connectpara añadircontainer2amy-network2. - Utiliza el comando
docker inspectpara verificar las conexiones de red.
Ejemplo
Después de conectar container2 a my-network2, deberías ver ambas redes listadas al inspeccionar el contenedor:
"Networks": {
"my-network": {
...
},
"my-network2": {
...
}
}
Desconectar un Contenedor de una Red
En este paso, aprenderás a eliminar un contenedor de una red sin necesidad de detenerlo. Esto es útil cuando necesitas aislar un contenedor o cuando estás reorganizando la arquitectura de tu red.
Tareas
- Desconecta
container2demy-networkutilizando el comandodocker network disconnect. - Verifica que
container2ya no esté conectado amy-network.
Requisitos
- Realiza todas las operaciones en el directorio
/home/labex/project. - Utiliza el comando
docker network disconnectpara retirarcontainer2demy-network. - Utiliza el comando
docker network inspectpara verificar la desconexión.
Ejemplo
Tras desconectar container2 de my-network, no deberías ver a container2 listado al inspeccionar my-network:
$ docker network inspect my-network
[
{
"Name": "my-network",
...
"Containers": {
"container1": {
...
}
},
...
}
]
Eliminar una Red
En este paso final, aprenderás a eliminar una red de Docker cuando ya no sea necesaria. La limpieza adecuada de los recursos no utilizados es una parte importante de la gestión eficiente de entornos Docker.
Tareas
- Desconecta
container2demy-network2si todavía está conectado. - Elimina la red
my-network2utilizando el comandodocker network rm. - Verifica que
my-network2haya sido eliminada.
Requisitos
- Realiza todas las operaciones en el directorio
/home/labex/project. - Asegúrate de que no haya contenedores conectados a
my-network2antes de eliminarla. - Utiliza el comando
docker network lspara verificar la eliminación de la red.
Ejemplo
Después de eliminar my-network2, no deberías verla en la lista al ejecutar docker network ls:
NETWORK ID NAME DRIVER SCOPE
abcdef123456 my-network bridge local
ghijkl789012 bridge bridge local
mnopqr345678 host host local
stuvwx901234 none null local
Resumen
¡Felicidades por completar el Desafío de Conceptos Básicos de Redes de Docker! Has navegado con éxito a través de los conceptos esenciales de las redes en Docker, incluyendo:
- Creación de redes personalizadas de Docker.
- Lanzamiento de contenedores dentro de redes específicas.
- Prueba de conectividad entre contenedores.
- Conexión de contenedores a múltiples redes.
- Desconexión de contenedores de redes.
- Eliminación de redes de Docker.
Estas habilidades constituyen la base de una gestión eficaz de redes en Docker y serán invaluables a medida que trabajes con aplicaciones contenedorizadas más complejas. Recuerda que una configuración de red adecuada es crucial para el aislamiento de contenedores, la seguridad y la comunicación eficiente entre servicios.
A lo largo de este desafío, has aprendido a crear entornos aislados para tus contenedores, permitir la comunicación entre ellos y gestionar las conexiones de red de forma dinámica. Estas capacidades te permiten diseñar arquitecturas de red sofisticadas que pueden adaptarse a requisitos cambiantes.
A medida que continúes tu camino con Docker, considera explorar temas de redes más avanzados, como las redes overlay para configuraciones multi-host, los plugins de red y cómo se integran las redes de Docker con plataformas de orquestación como Kubernetes. También podrías profundizar en conceptos de seguridad de red, como el uso de políticas de red para controlar el flujo de tráfico entre contenedores.
Sigue practicando estas habilidades y estarás bien preparado para diseñar y gestionar arquitecturas de red de contenedores sofisticadas en tus futuros proyectos. Recuerda, una red eficaz es la clave para construir aplicaciones contenedorizadas escalables, seguras y eficientes.



