Primero explicaré la necesidad de Docker y luego, cómo se puede usar.
¿Por qué necesitamos contenedores Docker?
Todavía lo recuerdo correctamente, estaba trabajando en un proyecto. En ese proyecto seguimos la arquitectura de microservicio. Para aquellos de ustedes que no saben qué es el microservicio, no se preocupen, les daré una introducción al mismo.
La idea detrás de los microservicios es que ciertos tipos de aplicaciones se vuelven más fáciles de construir y mantener cuando se dividen en piezas más pequeñas y compuestas que trabajan juntas. Cada componente se desarrolla por separado, y la aplicación es simplemente la suma de sus componentes constituyentes.
Considere el siguiente ejemplo:
En el diagrama anterior hay una tienda en línea con microservicios separados para cuentas de usuarios, catálogos de productos, procesamiento de pedidos y carritos de compras.
Bueno, esta arquitectura tiene muchos beneficios:
- Incluso si uno de tus microservicios falla, tu aplicación completa no se verá afectada en gran medida.
- Es más fácil de manejar
También hay muchos otros beneficios, no voy a entrar en muchos detalles acerca de los microservicios en esta publicación.
En esta arquitectura, estábamos usando máquinas virtuales CentOS. Esas máquinas virtuales se configuraron escribiendo scripts largos. Bueno, configurar esas máquinas virtuales no fue el único problema.
El desarrollo de tales aplicaciones requiere el inicio de varios microservicios en una máquina. Entonces, si está iniciando cinco de esos servicios, necesitará cinco máquinas virtuales en esa máquina. Considera el siguiente diagrama:
El otro problema es bastante común, sé que muchos de ustedes pueden relacionarse con él. La aplicación funciona en una computadora portátil de un desarrollador pero no en pruebas o producción. Esto puede deberse a no mantener un entorno informático coherente. Considera el siguiente diagrama:
Hubo muchos otros problemas aparte de esto también, pero creo que estos problemas son suficientes para que le explique la necesidad de los contenedores Docker.
Entonces, imagínese si le doy 8 GB de RAM a todas mis máquinas virtuales, y tengo 5 microservicios que se ejecutan en diferentes máquinas virtuales. En ese caso, estas máquinas virtuales requerirán 40 GB de RAM. Bueno, ahora necesito que las configuraciones de mi máquina host sean muy altas, casi 44 GB de RAM deben estar allí en mi máquina host. Obviamente, esta no es una solución sostenible para una arquitectura de este tipo porque, estoy desperdiciando muchos recursos aquí.
Bien, tengo muchos recursos para desperdiciar, pero todavía tengo un problema de inconsistencia en mi ciclo de vida de entrega de software (SDLC). Tengo que configurar estas máquinas virtuales tanto en prueba como en entorno de producción. En algún lugar de ese proceso, parte del software no se actualizó en el servidor de prueba y el equipo de desarrollo está utilizando la versión actualizada del software. Esto lleva a los conflictos.
¿Qué sucede si uso 100 máquinas virtuales? Entonces, la configuración de cada máquina virtual llevará mucho tiempo y, al mismo tiempo, también es propenso a errores.
Ahora, entendamos qué es Docker Container y cómo funciona, y cómo resolvió mi problema.
¿Qué es un contenedor Docker?
Docker es una herramienta diseñada para facilitar la creación, implementación y ejecución de aplicaciones mediante el uso de contenedores.
Puede crear Docker Containers, estos contenedores contendrán todos los archivos binarios y bibliotecas necesarios para su aplicación o microservicio en mi caso. Por lo tanto, su aplicación está presente en un contenedor, o usted ha contenedorizado su aplicación. Ahora, ese mismo contenedor se puede utilizar en el entorno Test y Prod.
Los contenedores Docker son una solución liviana para máquinas virtuales y utilizan el sistema operativo host. La mejor parte es que no tiene que asignar previamente ninguna RAM al contenedor Docker, lo tomará cuando sea necesario. Entonces, con Docker Container no tengo que preocuparme por el desperdicio de recursos.
Entendamos ahora, cómo funciona un contenedor Docker.
¿Cómo funciona un contenedor Docker?
El siguiente diagrama es básicamente, una forma de usar Docker. Y supongo que tienes una idea sobre Docker Image y Dockerfile.
Chicos, sé que el diagrama parece un poco complejo, pero créanme que no es tan complejo. A continuación se muestra la explicación del diagrama, incluso después de que sienta que es difícil de entender, puede comentar su duda, abordaré esas preguntas lo antes posible.
- Un desarrollador primero escribirá el código del proyecto en un archivo Docker y luego construirá una imagen a partir de ese archivo.
- Esta imagen contendrá el código completo del proyecto.
- Ahora, puede ejecutar esta imagen de Docker para crear tantos contenedores como desee.
- Esta imagen de Docker se puede cargar en el concentrador de Docker (es básicamente un repositorio en la nube para sus imágenes de Docker, puede mantenerla pública o privada).
- Esta imagen de Docker en el centro de Docker puede ser extraída por otros equipos, como QA o Prod.
Esto no solo evita el desperdicio de recursos, sino que también garantiza que el entorno informático que existe en la computadora portátil de un Desarrollador también se replique en otros equipos. Ahora siento que no tengo que decirte por qué necesitamos a Docker.
Esta era una forma de usarlo, supongo que ustedes deben tener curiosidad por saber cómo usé Docker para resolver mi problema de microservicios. Déjame darte una visión general sobre el mismo.
A continuación se muestra la explicación del diagrama:
- En primer lugar, escribimos los requisitos complejos dentro de un Dockerfile.
- Luego, lo empujamos en GitHub.
- Después de eso utilizamos un servidor CI (Jenkins).
- Este servidor Jenkins lo bajará de Git y creará el entorno exacto. Esto se utilizará en los servidores de producción, así como en los servidores de prueba.
- Lo implementamos en la preparación (se refiere a implementar su software en servidores con fines de prueba, antes de implementarlos completamente en los entornos de producción.) Para los evaluadores.
- Básicamente, pusimos en marcha exactamente lo que teníamos en Desarrollo, Pruebas y Puesta en Escena en Producción.
En realidad, será justo decir eso, Docker me facilitó la vida.
Bueno, esa fue la historia de mi compañía, veamos el estudio de caso de la Universidad de Indiana. Cómo Docker resolvió sus problemas.
Estudio de caso de la Universidad de Indiana:
La Universidad de Indiana es un sistema universitario público de varios campus en el estado de Indiana, Estados Unidos.
Planteamiento del problema
Estaban usando scripts personalizados para implementar las aplicaciones en la máquina virtual.
Su entorno fue optimizado para sus aplicaciones heredadas basadas en Java. Su entorno de cultivo incluye nuevos productos que no están basados únicamente en Java. Para dar a sus estudiantes la mejor experiencia posible, la Universidad necesitaba comenzar a modernizar las aplicaciones.
La Universidad quería mejorar la forma en que diseñan las aplicaciones, al pasar a una arquitectura basada en microservicios para sus aplicaciones.
Se necesitaba seguridad para los datos de los estudiantes, como los números de seguro social y los datos de salud de los estudiantes.
Solución:
Todos los problemas fueron resueltos por Docker Data Center (DDC), considere el diagrama a continuación:
Docker Trusted Registry – Almacena las imágenes Docker.
Interfaz de usuario web de UCP (plano de control universal) : ayuda a administrar todo el clúster desde un solo lugar. Los servicios se implementan utilizando la UI web de UCP, utilizando imágenes de Docker que se almacenan en DTR (Registro de confianza de Docker).
Los equipos de operaciones de TI aprovechan Universal Control Plane para aprovisionar el software instalado de Docker en los hosts y luego implementar sus aplicaciones sin tener que hacer un montón de pasos manuales para configurar toda su infraestructura.
UCP y DTR se integran con su servidor LDAP para proporcionar rápidamente el acceso a sus aplicaciones.
Consulte el video a continuación para obtener más información sobre Docker:
También te recomendaría que visites los siguientes blogs en Docker:
¿Qué es Docker?
Contenedor Docker