¿Qué es Docker Container? - Containerize su aplicación usando Docker



Docker Container es una solución alternativa ligera a Virtual Machine para crear, implementar y ejecutar aplicaciones dentro de un contenedor.

Bueno, espero que hayas leído mis blogs anteriores en Estibador donde he cubierto los conceptos básicos de Docker. Aquí, en este blog de Docker Container, hablaré sobre qué son los Docker Containers y cómo funcionan. Principalmente, nos centraremos en casos prácticos y de uso de Docker.

He enumerado los temas de este blog de contenedores de Docker:





  • ¿Por qué necesitamos contenedores Docker?
  • ¿Cómo funcionan los contenedores Docker?
  • Casos de uso del contenedor Docker

¿Por qué necesitamos contenedores Docker?

Todavía lo recuerdo correctamente, estaba trabajando en un proyecto. En ese proyecto estábamos siguiendo la arquitectura de microservicios. Para aquellos de ustedes que no saben qué es el microservicio, no se preocupen, les daré una introducción.

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 partes más pequeñas y componibles que funcionan juntas. Cada componente se desarrolla por separado y la aplicación es simplemente la suma de sus componentes constituyentes.



Considere el siguiente ejemplo:

Aplicación de compras en línea - Docker Container - Edureka

En el diagrama anterior hay una tienda en línea con microservicios separados para cuenta de usuario, catálogo de productos, procesamiento de pedidos y carritos de compras.



Bueno, esta arquitectura tiene muchos beneficios:

  • Incluso si uno de sus microservicios falla, toda su aplicación no se verá afectada en gran medida.
  • Es más fácil de manejar

También hay muchos otros beneficios, no entraré en muchos detalles sobre los microservicios en esta publicación. Pero pronto también crearé un par de blogs sobre microservicios.

En esta arquitectura, estábamos usando CentOS Virtual Machines. 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, necesita cinco VM en esa máquina. Considere el diagrama a continuación:

El otro problema es bastante común, sé que muchos de ustedes pueden identificarse con él. La aplicación funciona en la computadora portátil de un desarrollador, pero no en pruebas o producción. Esto puede deberse a que no se mantiene un entorno informático coherente. Considere el diagrama a continuación:

También hubo muchos otros problemas aparte de este, pero creo que estos problemas son suficientes para explicarles la necesidad de Docker Containers.

Descubra cómo los contenedores Docker son mejores que las máquinas virtuales

Entonces, imagínese si le doy 8 GB de RAM a todas mis máquinas virtuales y tengo 5 microservicios ejecutándose 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 deberían estar en mi máquina host. Obviamente, esta no es una solución sostenible para tal arquitectura porque estoy desperdiciando muchos recursos aquí.

Bien, tengo muchos recursos que desperdiciar, pero aún 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 momento 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 conduce a conflictos.

¿Qué sucede si estoy usando 100 máquinas virtuales? La configuración de cada máquina virtual llevará mucho tiempo y, al mismo tiempo, también es propensa a errores.

diferencia java entre implementos y extensiones

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.

Puedes crear Docker Containers, estos contenedores contendrán todos los binarios y bibliotecas necesarios para tu aplicación o microservicio en mi caso. Entonces, su aplicación está presente en un contenedor, o ha contenedorizado su aplicación. Ahora, ese mismo contenedor se puede utilizar en el entorno de prueba y producción.

Los contenedores Docker son una solución ligera para las máquinas virtuales y utilizan el sistema operativo host. La mejor parte es que no tiene que preasignar RAM al contenedor Docker, lo tomará cuando sea necesario. Por lo tanto, con Docker Container no tengo que preocuparme por el desperdicio de recursos.

Comprendamos 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, 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 creará una imagen a partir de ese archivo.
  • Esta imagen contendrá todo el código 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 (básicamente es un repositorio en la nube para sus imágenes de Docker, puede mantenerlo público o privado).
  • Esta imagen de Docker en el concentrador 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 se encuentra en la computadora portátil de un desarrollador también se replica en otros equipos. Ahora siento que no tengo que decirte por qué necesitamos Docker.

Esta fue 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 descripción general del mismo.

A continuación se muestra la explicación del diagrama:

  • En primer lugar, escribimos los requisitos complejos dentro de un Dockerfile.
  • Luego, lo presionamos en GitHub.
  • Después de eso usamos un servidor CI (Jenkins).
  • Este servidor Jenkins lo extraerá de Git y creará el entorno exacto. Esto se utilizará tanto en servidores de producción como en servidores de prueba.
  • Lo implementamos en entornos de prueba (se refiere a implementar su software en servidores con fines de prueba, antes de implementarlos por completo en producción).
  • Básicamente, pusimos en producción exactamente lo que teníamos en desarrollo, pruebas y puesta en escena.

De hecho, será justo decir que Docker me facilitó la vida.

Bueno, esa fue la historia de mi empresa, veamos el caso de estudio 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 múltiples campus en el estado de Indiana, Estados Unidos.

Planteamiento del problema

Usaban scripts personalizados para implementar las aplicaciones en la VM.

Su entorno se optimizó para sus aplicaciones heredadas basadas en Java. Su entorno de crecimiento incluye nuevos productos que no se basan únicamente en Java. Para brindarles 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 aplicaciones, pasando a una arquitectura basada en microservicios para sus aplicaciones.

Se necesitaba seguridad para los datos de los estudiantes, como los SSN 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:

Registro de confianza de Docker - Almacena las imágenes de Docker.

Interfaz de usuario web UCP (Universal Control Plane) - Ayuda a administrar todo el clúster desde un solo lugar. Los servicios se implementan mediante la interfaz de usuario web UCP, mediante imágenes de Docker que se almacenan en DTR (Docker Trusted Registry).

Los equipos de operaciones de TI aprovechan el Universal Control Plane para aprovisionar el software instalado de Docker en los hosts y luego implementar sus aplicaciones sin tener que realizar un montón de pasos manuales para configurar toda su infraestructura.

UCP y DTR se integran con su servidor LDAP para proporcionar rápidamente acceso a sus aplicaciones.

Espero que hayan leído los blogs anteriores para aprender los conceptos básicos de Docker.

Ahora, le explicaré cómo podemos usar Docker Compose para aplicaciones de múltiples contenedores.

Práctica de Docker:

Supongo que ha instalado Docker.Usaré Docker Compose en esta publicación, a continuación he dado una pequeña introducción a Docker Compose.

Docker Compose: Es una herramienta para definir y ejecutar aplicaciones Docker de varios contenedores. Con Docker Compose, puede usar un archivo Compose para configurar los servicios de su aplicación. Luego, usando un solo comando, puede crear e iniciar todos los servicios desde su configuración.

Suponga que tiene varias aplicaciones en varios contenedores y todos esos contenedores están vinculados entre sí. Por lo tanto, no desea ejecutar cada uno de esos contenedores uno por uno. Pero desea ejecutar esos contenedores con un solo comando. Ahí es donde Docker Compose entra en escena. Con él puede ejecutar múltiples aplicaciones en varios contenedores con un solo comando. es decir, docker-compose.

Ejemplo: Imagine que tiene diferentes contenedores, uno que ejecuta una aplicación web, otro que ejecuta un postgres y otro que ejecuta redis, en un archivo YAML. Eso se llama docker compose file, desde allí puede ejecutar estos contenedores con un solo comando.

Tomemos un ejemplo más:

Supongamos que desea publicar un blog, para eso utilizará CMS (Content Management System), y wordpress es el CMS más utilizado. Básicamente, necesita un contenedor para WordPress y necesita un contenedor más como MySQL para back-end, ese contenedor MySQL debe estar vinculado al contenedor de wordpress. También necesitamos un contenedor más para Php Myadmin que estará vinculado a la base de datos MySQL, básicamente, se usa para acceder a la base de datos MySQL.

¿Qué tal si ejecuto prácticamente el ejemplo mencionado anteriormente?

Pasos involucrados:

  1. Instalar Docker Compose :
  2. Instalar WordPress: Usaremos el oficial WordPress y MariaDB Imágenes de Docker.
  3. Instale MariaDB: Es uno de los servidores de bases de datos más populares del mundo. Está hecho por los desarrolladores originales de MySQL. MariaDB se desarrolla como software de código abierto y como base de datos relacional proporciona una interfaz SQL para acceder a los datos.
  4. Instalar PhpMyAdmin: Es una herramienta de software libre escrita en PHP, destinada a manejar la administración de MySQL a través de la Web.
  5. Cree el sitio de WordPress:

¡Empecemos!

Instale Docker Compose:

Instale Python Pip primero:

sudo apt-get install python-pip

Ahora, puede instalar Docker Compose:

sudo pip install docker-compose

Instalar WordPress:

Crea un directorio de wordpress:

mkdir wordpress

Ingrese a este directorio de wordpress:

cd wordpress /

En este directorio, cree un archivo YAML de Docker Compose, luego edítelo usando gedit:

sudo gedit docker-compose.yml

Pegue las siguientes líneas de código en ese archivo yaml:

wordpress: image: enlaces de wordpress: - wordpress_db: puertos mysql: - 8080: 80 wordpress_db: image: mariadb entorno: MYSQL_ROOT_PASSWORD: edureka phpmyadmin: image: corbinu / docker-phpmyadmin enlaces: - wordpress_db: puertos mysql: - 8181: 80 entorno: MYSQL_USERNAME: root MYSQL_ROOT_PASSWORD: edureka

Sé que quieres que te explique este código, así que lo que haré, tomaré pequeñas secciones de este código y te explicaré lo que está sucediendo.

wordpress_db: ... entorno: MYSQL_ROOT_PASSWORD: edureka ...

Esto establecerá una variable de entorno dentro del contenedor wordpress_db llamada MYSQL_ROOT_PASSWORD con la contraseña deseada. La imagen de MariaDB Docker está configurada para verificar esta variable de entorno cuando se inicia y se encargará de configurar la base de datos con una cuenta raíz con la contraseña definida como MYSQL_ROOT_PASSWORD.

wordpress: ... puertos: - 8080: 80 ...

El primer número de puerto es el número de puerto en el host y el segundo número de puerto es el puerto dentro del contenedor. Entonces, esta configuración reenvía las solicitudes en el puerto 8080 del host al puerto 80 predeterminado del servidor web dentro del contenedor.

phpmyadmin: image: corbinu / docker-phpmyadmin enlaces: - wordpress_db: puertos mysql: - 8181: 80 entorno: MYSQL_USERNAME: root MYSQL_ROOT_PASSWORD: edureka

Esto toma docker-phpmyadmin por el miembro de la comunidad corbinu, lo vincula a nuestro contenedor wordpress_db con el nombre mysql (es decir, desde dentro del contenedor phpmyadmin, las referencias al nombre de host mysql se reenviarán a nuestro contenedor wordpress_db), expone su puerto 80 en el puerto 8181 del host, y finalmente establece un par de variables de entorno con nuestro nombre de usuario y contraseña MariaDB. Esta imagen no toma automáticamente la variable de entorno MYSQL_ROOT_PASSWORD del entorno de wordpress_dbcontainer, como lo hace la imagen de wordpress. De hecho, tenemos que copiar la línea MYSQL_ROOT_PASSWORD: edureka del contenedor wordpress_db y establecer el nombre de usuario como root.

Ahora inicie el grupo de aplicaciones:

docker-compose up -d

Eso es todo lo que tienes que hacer. Puede agregar tantos contenedores como desee de esta manera y vincularlos todos de la forma que desee.

Ahora, en el navegador, vaya al puerto 8080, usando su IP pública o nombre de host, como se muestra a continuación:

localhost: 8080

Complete este formulario y haga clic en instalar WordPress.

Una vez que haya terminado, visite la dirección IP de su servidor nuevamente (esta vez usando el puerto 8181, por ejemplo, localhost: 8181). La pantalla de inicio de sesión de phpMyAdmin le dará la bienvenida:

Continúe e inicie sesión con el nombre de usuario raíz y la contraseña que estableció en el archivo YAML, y podrá explorar su base de datos. Notarás que el servidor incluye una base de datos de WordPress, que contiene todos los datos de tu instalación de WordPress.

Aquí, termino mi blog de Docker Container. Espero que hayas disfrutado de 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 250.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, Chef, Saltstack y GIT para automatizar varios pasos en SDLC.

¿Tienes una pregunta para mí? Menciónelo en la sección de comentarios y me comunicaré con usted.