Área de Pruebas de Redes de Docker

DockerDockerBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

La red de Docker es un aspecto fundamental de la orquestación de contenedores, que permite que los contenedores se comuniquen entre sí y con redes externas. Este reto lo guiará a través de los conceptos esenciales de la red de Docker, desde la creación y gestión de redes hasta la conexión y desconexión de contenedores.

Al completar este reto, adquirirá experiencia práctica con los comandos de red de Docker y entenderá cómo configurar la comunicación entre contenedores. Estas habilidades son cruciales para desarrollar y desplegar aplicaciones de múltiples contenedores en entornos de Docker.

¡Sumérjase en el mundo de la red de Docker!


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/NetworkOperationsGroup(["Network Operations"]) docker/ContainerOperationsGroup -.-> docker/run("Run a Container") docker/ContainerOperationsGroup -.-> docker/exec("Execute Command in Container") docker/ContainerOperationsGroup -.-> docker/inspect("Inspect Container") docker/NetworkOperationsGroup -.-> docker/network("Manage Networks") subgraph Lab Skills docker/run -.-> lab-389054{{"Área de Pruebas de Redes de Docker"}} docker/exec -.-> lab-389054{{"Área de Pruebas de Redes de Docker"}} docker/inspect -.-> lab-389054{{"Área de Pruebas de Redes de Docker"}} docker/network -.-> lab-389054{{"Área de Pruebas de Redes de Docker"}} end

Crear una red

En este paso, creará su primera red de Docker. Esta es la base para conectar contenedores y permitir la comunicación entre ellos.

Tareas

  1. Cree una nueva red de tipo bridge (puente) llamada my-network utilizando el comando docker network create.
  2. Verifique que la red se haya creado listando todas las redes de Docker.

Requisitos

  • Realice todas las operaciones en el directorio /home/labex/project.
  • Utilice el controlador de bridge (puente) predeterminado al crear la red.

Ejemplo

Después de completar este paso, debería ver my-network en la lista cuando ejecute docker network ls:

NETWORK ID     NAME         DRIVER    SCOPE
abcdef123456   my-network   bridge    local
✨ Revisar Solución y Practicar

Lanzar contenedores en la red

Ahora que tenemos una red, vamos a lanzar algunos contenedores y conectarlos a ella. Este paso demostrará cómo iniciar contenedores dentro de una red específica, un concepto clave en la red de Docker.

Tareas

  1. Inicie un contenedor llamado container1 utilizando la imagen nginx y cónectelo a my-network.
  2. Inicie otro contenedor llamado container2 utilizando la imagen httpd y cónectelo a my-network.
  3. Verifique que ambos contenedores estén en ejecución y conectados a my-network.

Requisitos

  • Realice todas las operaciones en el directorio /home/labex/project.
  • Utilice la bandera --network al iniciar los contenedores para conectarlos a my-network.
  • Ejecute ambos contenedores en modo desatendido (detached mode).

Ejemplo

Después de completar este paso, debería ver ambos contenedores en ejecución cuando utilice 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
✨ Revisar Solución y Practicar

Probar la conectividad

En este paso, verificará que los contenedores pueden comunicarse entre sí a través de la red que ha creado. Esta es una prueba crucial para asegurarse de que la configuración de su red está funcionando como se espera.

Tareas

  1. Utilice el comando docker exec para ejecutar una shell en container1.
  2. Desde dentro de container1, utilice el comando curl para acceder a container2 por su nombre de contenedor.

Requisitos

  • Realice todas las operaciones en el directorio /home/labex/project.
  • Utilice container2 como el nombre de host en su comando curl.
  • El comando curl debe acceder al puerto HTTP predeterminado (80) en container2.

Ejemplo

Después de ejecutar el comando curl desde container1, debería ver el contenido de la página predeterminada del servidor HTTP Apache:

<!DOCTYPE html>
<html><body><h1>It works!</h1></body></html>
✨ Revisar Solución y Practicar

Conectar un contenedor a múltiples redes

En este paso, aprenderá cómo conectar un solo contenedor a múltiples redes. Este es un concepto más avanzado que es útil para crear topologías de red complejas o para migrar gradualmente servicios entre redes.

Tareas

  1. Cree una nueva red de tipo bridge (puente) llamada my-network2.
  2. Conecte container2 a my-network2 manteniendo su conexión a my-network.
  3. Verifique que container2 ahora esté conectado a ambas redes.

Requisitos

  • Realice todas las operaciones en el directorio /home/labex/project.
  • Utilice el comando docker network connect para agregar container2 a my-network2.
  • Utilice el comando docker inspect para verificar las conexiones de red.

Ejemplo

Después de conectar container2 a my-network2, debería ver ambas redes en la lista cuando inspeccione el contenedor:

"Networks": {
    "my-network": {
       ...
    },
    "my-network2": {
       ...
    }
}
✨ Revisar Solución y Practicar

Desconectar un contenedor de una red

En este paso, aprenderá cómo eliminar un contenedor de una red sin detener el contenedor. Esto es útil cuando necesita aislar un contenedor o cuando está reorganizando la arquitectura de su red.

Tareas

  1. Desconecte container2 de my-network utilizando el comando docker network disconnect.
  2. Verifique que container2 ya no esté conectado a my-network.

Requisitos

  • Realice todas las operaciones en el directorio /home/labex/project.
  • Utilice el comando docker network disconnect para eliminar container2 de my-network.
  • Utilice el comando docker network inspect para verificar la desconexión.

Ejemplo

Después de desconectar container2 de my-network, no debería ver container2 en la lista cuando inspeccione my-network:

$ docker network inspect my-network
[
    {
        "Name": "my-network",
       ...
        "Containers": {
            "container1": {
               ...
            }
        },
       ...
    }
]
✨ Revisar Solución y Practicar

Eliminar una red

En este último paso, aprenderá cómo 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

  1. Desconecte container2 de my-network2 si todavía está conectado.
  2. Elimine la red my-network2 utilizando el comando docker network rm.
  3. Verifique que my-network2 se haya eliminado.

Requisitos

  • Realice todas las operaciones en el directorio /home/labex/project.
  • Asegúrese de que ningún contenedor esté conectado a my-network2 antes de eliminarla.
  • Utilice el comando docker network ls para verificar la eliminación de la red.

Ejemplo

Después de eliminar my-network2, no debería verla en la lista cuando ejecute 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
✨ Revisar Solución y Practicar

Resumen

¡Felicidades por completar el Desafío de Conceptos Básicos de Redes en Docker! Has navegado con éxito a través de los conceptos esenciales de las redes de Docker, incluyendo:

  1. Crear redes personalizadas de Docker
  2. Lanzar contenedores dentro de redes específicas
  3. Probar la conectividad entre contenedores
  4. Conectar contenedores a múltiples redes
  5. Desconectar contenedores de redes
  6. Eliminar redes de Docker

Estas habilidades forman la base de una gestión efectiva de las redes de Docker y serán inestimables a medida que trabajes con aplicaciones contenerizadas 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 cómo crear entornos aislados para tus contenedores, habilitar la comunicación entre ellos y gestionar dinámicamente las conexiones de red. Estas capacidades te permiten diseñar arquitecturas de red sofisticadas que pueden adaptarse a requisitos cambiantes.

A medida que continúes tu viaje con Docker, considera explorar temas de redes más avanzados, como las redes overlay (redes superpuestas) para configuraciones multi-host, los plugins de red y cómo las redes de Docker se integran con plataformas de orquestación de contenedores como Kubernetes. También podrías querer profundizar en conceptos de seguridad de red, como cómo usar 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 efectiva es la clave para construir aplicaciones contenerizadas escalables, seguras y eficientes.