En el mundo actual, las empresas se han vuelto interesadas en la creación de contenedores, lo que requiere fuertes habilidades de redes para configurar correctamente una arquitectura de contenedores y, por lo tanto, esto introduce el concepto de Docker Networking.
En este blog sobre Docker Networking, pasará por los siguientes temas:
- ¿Qué es Docker?
- Redes en Docker
- Objetivos de las redes Docker
- Modelo de red de contenedores
- Controladores de red
- Las manos en
¿Qué es Docker?
Para comprender Docker, debe conocer el historial de cómo se implementaron las aplicaciones antes y luego cómo se implementan las aplicaciones utilizando contenedores ahora.
Como puede ver en el diagrama anterior, la forma anterior tenía aplicaciones en el host.Entonces, n número de aplicaciones comparten las bibliotecas presentes en ese sistema operativo.Pero, con la contenedorización, el sistema operativo tendrá un kernel que es lo único que será común entre todas las aplicaciones.Por lo tanto, las aplicaciones no pueden acceder a las bibliotecas de las demás.
Entonces, Estibador En términos simples, es una plataforma abierta para desarrollar, enviar y ejecutar aplicaciones, que permite al usuario separar las aplicaciones de las infraestructuras con la ayuda de contenedores para entregar software rápidamente.
Entonces, ¿cómo se comunican estos contenedores entre sí en diversas situaciones?
Bueno, eso viene a través de Docker Networking.
Red de Docker
Antes de profundizar en Docker Networking, permítame mostrarle el flujo de trabajo de Docker.
Como puede ver en el diagrama anterior. Un desarrollador escribe un código que estipula los requisitos de la aplicación o las dependencias en un archivo Docker fácil de escribir y este archivo Docker produce imágenes de Docker. Por tanto, las dependencias necesarias para una aplicación en particular están presentes en esta imagen.
Ahora, los contenedores de Docker no son más que la instancia en tiempo de ejecución de Docker Image. Estas imágenes se cargan en Docker Hub (repositorio de Git para imágenes de Docker) que contiene repositorios públicos / privados.
Por lo tanto, desde los repositorios públicos, también puede extraer su imagen y puede cargar sus propias imágenes en Docker Hub. Luego, desde Docker Hub, varios equipos, como los de Control de calidad o Producción, extraerán esa imagen y prepararán sus propios contenedores. Estos contenedores individuales se comunican entre sí a través de una red para realizar las acciones requeridas, y esto no es más que Docker Networking.
Entonces, puede definir Docker Networking como un pasaje de comunicación a través del cual todos los contenedores aislados se comunican entre sí en diversas situaciones para realizar las acciones requeridas.
¿Cuáles cree que son los objetivos de Docker Networking?
Objetivos de las redes Docker
Flexibilidad - Docker proporciona flexibilidad al permitir que cualquier número de aplicaciones en varias plataformas se comuniquen entre sí.
Multiplataforma - Docker se puede usar fácilmente en multiplataforma que funciona en varios servidores con la ayuda de Docker Swarm Clusters.
Escalabilidad - Docker es una red completamente distribuida, que permite que las aplicaciones crezcan y escalen individualmente al tiempo que garantiza el rendimiento.
Descentralizado - Docker usa una red descentralizada, que permite la capacidad de tener las aplicaciones extendidas y altamente disponibles. En el caso de que un contenedor o un host desaparezca repentinamente de su grupo de recursos, puede abrir un recurso adicional o pasar a los servicios que aún están disponibles.
Fácil de usar - Docker facilita la automatización de la implementación de servicios, haciéndolos fáciles de usar en la vida diaria.
java que es un token
Apoyo - Docker ofrece soportes listos para usar. Por lo tanto, la capacidad de usar Docker Enterprise Edition y obtener toda la funcionalidad de manera muy fácil y directa, hace que la plataforma Docker sea muy fácil de usar.
Para habilitar los objetivos anteriores, necesita algo conocido como Modelo de red de contenedores.
¿Quiere explorar varias etapas de DevOps?Modelo de red de contenedores (CNM)
Antes de decirle qué es exactamente un modelo de red de contenedores, permítame informarle acerca de Libnetwork que se necesita antes de que comprenda CNM.
Libnetwork es una biblioteca Docker de código abierto que implementa todos los conceptos clave que componen el CNM.
Entonces, Modelo de red de contenedores (CNM) estandariza los pasos necesarios para proporcionar redes para contenedores que utilizan varios controladores de red. CNM requiere un almacén de valor clave distribuido como una consola para almacenar la configuración de red.
El CNM tiene interfaces para complementos de IPAM y complementos de red.
Las API de complementos de IPAM se utilizan para crear / eliminar grupos de direcciones y asignar / desasignar direcciones IP de contenedores, mientras que las API de complementos de red se utilizan para crear / eliminar redes y agregar / eliminar contenedores de redes.
Un CNM se ha basado principalmente en 5 objetos: controlador de red, controlador, red, punto final y espacio aislado.
Objetos de modelo de red de contenedores
Controlador de red: Proporciona el punto de entrada a Libnetwork que expone API simples para que Docker Engine asigne y administre redes. Dado que Libnetwork admite múltiples controladores incorporados y remotos, Network Controller permite a los usuarios conectar un controlador en particular a una red determinada.
Conductor: Posee la red y es responsable de administrar la red mediante la participación de varios controladores para satisfacer diversos casos de uso y escenarios de implementación.
Red: Proporciona conectividad entre un grupo de puntos finales que pertenecen a la misma red y se aíslan del resto. Por lo tanto, cada vez que se crea o actualiza una red, el controlador correspondiente será notificado del evento.
Punto final: Proporciona la conectividad para los servicios expuestos por un contenedor en una red con otros servicios proporcionados por otros contenedores en la red. Un punto final representa un servicio y no necesariamente un contenedor en particular, el punto final también tiene un alcance global dentro de un clúster.
Salvadera: Creado cuando los usuarios solicitan crear un punto final en una red. Un Sandbox puede tener varios puntos finales conectados a diferentes redes que representan la configuración de la red del contenedor, como dirección IP, dirección MAC, rutas, DNS.
Entonces, esos fueron los 5 objetos principales de CNM.
Ahora, déjeme decirle los diversos controladores de red involucrados en la red Docker.
¿Quiere llevar el aprendizaje de DevOps a un nivel superior?Controladores de red
Hay principalmente 5 controladores de red: Bridge, Host, None, Overlay, Macvlan
Puente: La red puente es una red interna privada predeterminada creada por Docker en el host. Entonces, todos los contenedores obtienen una dirección IP interna y estos contenedores pueden acceder entre sí, utilizando esta IP interna. Las redes Bridge se utilizan generalmente cuando sus aplicaciones se ejecutan en contenedores independientes que necesitan comunicarse.
Anfitrión : Este controlador elimina el aislamiento de red entre el host de la ventana acoplable y los contenedores de la ventana acoplable para utilizar la red del host directamente. Entonces, con esto, no podrá ejecutar varios contenedores web en el mismo host, en el mismo puerto, ya que el puerto ahora es común para todos los contenedores en la red de host.
cómo escribir un método tostring en java
Ninguna : En este tipo de red, los contenedores no están conectados a ninguna red y no tienen acceso a la red externa u otros contenedores. Entonces, esta red se usa cuandodesea deshabilitar completamente la pila de redes en un contenedor y,solo cree un dispositivo de loopback.
Cubrir : Crea una red privada interna que se extiende por todos los nodos que participan en el clúster de enjambre. Por lo tanto, las redes Overlay facilitan la comunicación entre un servicio de enjambre y un contenedor independiente, o entre dos contenedores independientes en diferentes Docker Daemons.
Macvlan: Le permite asignar una dirección MAC a un contenedor, haciéndolo aparecer como un dispositivo físico en su red. Luego, el demonio de Docker enruta el tráfico a los contenedores por sus direcciones MAC. El controlador Macvlan es la mejor opción cuando se espera que esté conectado directamente a la red física, en lugar de enrutarlo a través de la pila de red del host de Docker.
Muy bien, esa era toda la teoría necesaria para comprender Docker Networking. Ahora, permítanme seguir adelante y mostrarles prácticamente cómo se crean las redes y los contenedores se comunican entre sí.
Las manos en
Entonces, asumiendo que todos ustedes han instalado Docker en sus sistemas, tengo un escenario para mostrar.
Suponga que desea almacenar el nombre y el ID de los cursos, para lo cual necesitará una aplicación web. Básicamente, necesita un contenedor para la aplicación web y necesita un contenedor más como MySQL para el backend, ese contenedor MySQL debe estar vinculado al contenedor de la aplicación web.
¿Qué tal si ejecuto prácticamente el ejemplo mencionado anteriormente?
Pasos involucrados:
- Inicialice Docker Swarm para formar un clúster Swarm.
- Crear una red superpuesta
- Cree servicios para aplicaciones web y MySQL
- Conecta las aplicaciones a través de la red
¡Empecemos!
Paso 1: Inicialice Docker Swarm en la máquina.
docker swarm init --advertise-addr 192.168.56.101
El indicador –advertise-addr configura el nodo administrador para publicar su dirección como 192.168.56.101. Los otros nodos del enjambre deben poder acceder al administrador en la dirección IP.
Paso 2: Ahora, si desea unir este nodo administrador al nodo trabajador, copie el enlace que obtiene cuando inicializa swarm en el nodo trabajador.
Paso 3: Crea una red superpuesta.
red acoplable crear -d superposición myoverlaynetwork
Donde myoverlay es el nombre de la red y -d permite que Docker Daemon se ejecute en segundo plano.
Paso 4.1: Cree una aplicación web de servicio1 y use la red que ha creado para implementar este servicio en el clúster de enjambre.
Docker service create --name webapp1 -d --network myoverlaynetwork -p 8001: 80 hshar / webapp
Donde -pes para reenvío de puertos,hshares el nombre de la cuenta en Docker Hub y webapp es el nombre de la aplicación web que ya está presente en Docker Hub.
Paso 4.2: Ahora, compruebe si el servicio está creado o no.
servicio ls docker
Paso 5.1: Ahora, cree un servicio MySQL y use la red que ha creado para implementar el servicio en el clúster de enjambre.
Docker service create --name mysql -d --network myoverlaynetwork -p 3306: 3306 hshar / mysql: 5.5
Paso 5.2: Ahora, compruebe si el servicio está creado o no.
servicio ls docker
Paso 6.1: Después de eso, verifique qué contenedor se está ejecutando en su nodo maestro y vaya al contenedor hshar / webapp.
docker ps
Paso 6.2: Entonces, puede ver que solo el servicio de la aplicación web está en el nodo del administrador. Entonces, ingrese al contenedor de la aplicación web.
docker exec -it container_id bash nano var / www / html / index.php
El comando docker ps enumerará ambos contenedores con su respectiva identificación de contenedor. El segundo comando habilitará ese contenedor en modo interactivo.
Paso 7: Ahora, cambie $ servername de localhost a mysql y $ password de “” ”a“ edureka ”, y también cambie todos los detalles de la base de datos requeridos y guarde su archivo index.php usando el atajo de teclado Ctrl + xy después de eso y para guardar y presione enter.
Paso 8: Ahora, vaya al contenedor mysql que se ejecuta en otro nodo.
docker exec -it container_id bash
fibonacci iterativo c ++
Paso 9: Una vez que ingrese al contenedor mysql, ingrese los siguientes comandos para usar la base de datos en MySQL.
Paso 9.1: Obtenga acceso para usar el contenedor mysql.
mysql -u root -pedureka
Donde -u representa al usuario y -p es la contraseña de su máquina.
Paso 9.2: Cree una base de datos en mysql que se utilizará para obtener datos de webapp1.
CREAR BASE DE DATOS HandsOn
Paso 9.3: Utilice la base de datos creada.
USE HandsOn
Paso 9.4: Cree una tabla en esta base de datos que se utilizará para obtener datos de webapp1.
CREATE TABLE detalles_del_curso (nombre_del_curso VARCHAR (10), id_del_curso VARCHAR (11))
Paso 9.5: Ahora, salga de MySQL y el contenedor también usando el comando Salida .
Paso 10: Vaya a su navegador e ingrese la dirección como localhost: 8001 / index.php . Esto abrirá su aplicación web. Ahora, ingrese los detalles de los cursos y haga clic en Enviar consulta .
Paso 11: Una vez que haga clic en Enviar consulta, vaya al nodo en el que se está ejecutando su servicio MySQL y luego ingrese al contenedor.
docker exec -it container_id bash mysql -u root -pedureka USE HandsOn SHOW tablas seleccionar * de course_details
Esto le mostrará el resultado de todos los cursos, de los cuales ha completado los detalles.
Aquí, termino mi blog de Docker Networking. Espero que les haya gustado este post. Puedes comprobar otros blogs en la serie también, que tratan los conceptos básicos de Docker.
Si encuentra relevante este blog de contenedores de Docker, consulte el por Edureka, una empresa de aprendizaje en línea de confianza con una red de más de 450.000 alumnos satisfechos repartidos por todo el mundo. El curso de formación de certificación de Edureka DevOps ayuda a los alumnos a adquirir experiencia en diversos procesos y herramientas de DevOps como Puppet, Jenkins, Docker, Nagios, Ansible y GIT para automatizar varios pasos en SDLC.
¿Busca una certificación en DevOps?¿Tienes una pregunta para mí? Menciónelo en la sección de comentarios y me pondré en contacto con usted.