Descripción general de la arquitectura de Docker y componentes de Docker [para principiantes]

Publicado: 2020-12-31

Si se ha cruzado recientemente con el mundo de los contenedores, probablemente no sea una mala idea comprender los elementos subyacentes que trabajan juntos para ofrecer los beneficios de la contenedorización. Pero antes de eso, hay una pregunta que puede hacer. ¿Qué problema resuelven los contenedores?

Después de crear una aplicación en un ciclo de vida de desarrollo típico, el desarrollador la envía al evaluador para fines de prueba. Sin embargo, dado que los entornos de desarrollo y prueba son diferentes, el código no funciona.

Ahora, predominantemente, hay dos soluciones para esto: o usa una máquina virtual o un entorno en contenedores como Docker. En los viejos tiempos, las organizaciones solían implementar máquinas virtuales para ejecutar múltiples aplicaciones.

Entonces, ¿por qué comenzaron a adoptar contenedores en lugar de máquinas virtuales? En este artículo, proporcionaremos explicaciones detalladas de todas estas preguntas.

Detrás de esta fantástica herramienta tiene que haber una arquitectura igualmente bien pensada. Antes de conocer los componentes de la arquitectura de Docker, entendamos los contenedores de Docker y cómo son superiores a las máquinas virtuales.

Tabla de contenido

Contenedores Docker

Docker es un proyecto de código abierto que brinda la capacidad de crear, empaquetar y ejecutar aplicaciones en entornos aislados y contenidos llamados contenedores.

Con todo el aislamiento y la seguridad que brinda la plataforma Docker, le permite ejecutar muchos contenedores simultáneamente en un host en particular.

Razones por las que los contenedores Docker son ampliamente adoptados incluyen

  • Permite a los desarrolladores escribir código localmente y compartir el trabajo con su equipo mediante contenedores.
  • Pueden insertar sus aplicaciones en los entornos de prueba, que son los contenedores y ejecutar pruebas automatizadas.
  • Cuando se encuentran errores, se pueden corregir dentro del entorno de desarrollo y luego volver a implementar.
  • Obtener una solución es tan simple como enviar una imagen actualizada al entorno de producción.

Antes de profundizar en el tema, debemos diferenciar las prácticas tradicionales de virtualización de la contenedorización de nueva generación.

Máquinas virtuales frente a contenedores Docker

Antes de que usáramos la contenedorización para nuestras prácticas de DevOps, las máquinas virtuales estaban en la cima de la plataforma. Solíamos crear máquinas virtuales para cada aplicación.

Si bien las máquinas virtuales cumplían con casi todas las necesidades, la desventaja de usar máquinas virtuales era engorrosa y asignaba toda la memoria y los recursos de hardware necesarios de las máquinas host subyacentes.

Sin embargo, se evitó fácilmente con la creación de contenedores porque los contenedores brindan virtualización a nivel del sistema operativo y, por lo general, requieren menos memoria. Por lo tanto, se hizo popular y finalmente fue adoptado por la comunidad DevOps.

Fuente de imagen

El diagrama anterior describe cómo difieren las arquitecturas de las máquinas virtuales y los contenedores y por qué los contenedores ahora han superado a las máquinas virtuales para los procesos de desarrollo cotidianos. A diferencia de las máquinas virtuales, los contenedores se asientan sobre los motores de contenedores para proporcionar virtualización a nivel de sistema operativo, lo que ahorra muchos recursos.

Motor acoplable

Antes de analizar los diferentes componentes arquitectónicos de Docker, es esencial comprender el flujo de trabajo de Docker. Echemos un vistazo al motor Docker y sus diversas partes, lo que nos dará una idea de cómo funciona el sistema Docker. Docker Engine es principalmente una aplicación cliente-servidor típica con tres componentes principales.

Servidor (Demonio)

El demonio de Docker es un proceso continuo que se ejecuta en segundo plano y administra todos los objetos de Docker. Escucha las solicitudes de API de Docker presentadas por el cliente y las procesa continuamente.

API de descanso

Es la interfaz que utilizan los clientes de Docker para interactuar con el demonio de Docker. Los clientes pueden hablar con el daemon a través de la API y pueden proporcionarle instrucciones.

Cliente

El cliente de Docker es una interfaz de línea de comandos (CLI) que puede interactuar con el demonio. Simplifica todo el proceso de gestión de contenedores.

Fuente de imagen

El cliente de Docker (que puede ser un cliente HTTP, como una CLI) se comunica con el daemon, que realiza la pesada tarea de crear, ejecutar y compartir contenedores. El Cliente y el demonio pueden ejecutarse en la misma máquina o conectar un cliente a un demonio remoto. El Cliente y el daemon se comunican entre sí mediante una API Rest a través de sockets o una interfaz de red. Docker Client ayuda a los usuarios a administrar objetos de Docker, como contenedores, imágenes, volúmenes, etc. Más información sobre los proyectos de Docker

Inscríbase en cursos de desarrollo de software de las mejores universidades del mundo. Obtenga programas Executive PG, programas de certificados avanzados o programas de maestría para acelerar su carrera.

Componentes Arquitectónicos

Como se discutió anteriormente, Docker usa una arquitectura Cliente-Servidor, donde el Cliente se comunica con el daemon a través de una API Rest. La arquitectura de Docker consta de varios componentes, como se explica a continuación.

Fuente de imagen

Demonio

Escucha las solicitudes de API iniciadas por los clientes y administra objetos de Docker, incluidos contenedores, imágenes, volúmenes y redes. También puede comunicarse con otros demonios para administrar los servicios de Docker, especialmente para administrar grandes redes de Docker.

Cliente

Los usuarios de Docker pueden comunicarse con el daemon usando Docker Client. Los usuarios ejecutan comandos como "Docker run..." utilizando un cliente como CLI que luego reenvía estos comandos a Docker (daemon) y finalmente los lleva a cabo. El cliente de Docker se comunica con varios demonios.

Registros

Almacena imágenes de Docker y puede ser pública o privada. Docker está configurado para buscar imágenes de forma predeterminada en Docker Hub. Cuando el cliente emite un comando de extracción o ejecución, las imágenes se extraen de los repositorios.

Objetos acoplables

Al trabajar con Docker, interactuamos con varios objetos como contenedores, imágenes, volúmenes, redes, etc.

Algunos de estos objetos son

Imágenes

Es una plantilla de solo lectura y contiene instrucciones para crear contenedores. También contiene metadatos que describen las capacidades del contenedor. Los usuarios pueden extraer imágenes del registro de Docker y crear capas de imágenes grabables sobre ellas para crear imágenes personalizadas que se ajusten a los requisitos de su aplicación. Algunas ideas populares incluyen Ubuntu, Nginx, MySQL, etc. Estas ideas se pueden compartir entre equipos, lo que les ayuda a trabajar en colaboración en una aplicación.

Contenedores

Los contenedores son instancias de imágenes que proporcionan entornos aislados para las aplicaciones. Solo tienen acceso a los recursos definidos por las imágenes utilizadas para construirlos.

La red

Docker Networks permite que contenedores aislados en la misma red se comuniquen y compartan recursos. Algunas redes proporcionadas por Docker incluyen puente, host, superposición, Macvlan, etc.

Almacenamiento

Docker le permite almacenar datos dentro de la capa de contenedor de escritura con la ayuda de controladores. Docker permite cuatro opciones para el almacenamiento persistente: Docker Volumes, Volume Containers, Directory Mounts y Storage Plugins.

La opción de almacenamiento más utilizada son los volúmenes. Se colocan en el sistema de archivos del host y permiten que varios contenedores compartan y escriban datos dentro de estos volúmenes.

Conclusión

Docker utiliza un conjunto de tecnologías subyacentes de última generación para proporcionar servicios de contenedorización eficientes a sus usuarios. Sin duda, en los últimos años, Docker ha comenzado a ganar terreno entre la comunidad de desarrolladores y seguirá haciéndolo en los próximos años.

Debido a la amplia gama de beneficios que brindan los contenedores, como la eficiencia de los recursos, la escalabilidad, etc., asegura correctamente su posición en la parte superior de la plataforma.

En este artículo, hemos discutido algunos de los conceptos más esenciales de Docker, como el flujo de trabajo de Docker, su arquitectura y las tecnologías subyacentes, los diversos objetos de Docker, como contenedores, imágenes, registros, redes, etc.

Ahora está bien encaminado para sumergirse profundamente en el hermoso mundo de Docker Containers. Ahora debería comprender mejor cómo funcionan juntos los diferentes recursos de Docker para brindarle un montón de funciones que le permitirían crear, implementar y compartir sus aplicaciones sin problemas.

Aprenda la arquitectura de Docker con upGrad

Inicie su viaje de creación de aplicaciones a un ritmo acelerado con upGrad.

UpGrad Education Pvt. Ltd. está ofreciendo un curso exclusivo de especialización en desarrollo de software en DevOps, que prepara a los aspirantes para ser absorbidos por los grandes gigantes de TI.

Aspectos destacados del curso

El programa Executive PG de upGrad en desarrollo de software con especialización en Big Data es un curso en línea cuidadosamente diseñado segregado en 12 meses.

En este plan de estudios, usted

  • Obtenga acceso exclusivo al contenido de Data Science y Machine Learning
  • Trabajar en proyectos y asignaciones en vivo
  • Obtenga un apoyo profesional de 360 ​​grados
  • Aprende diez lenguajes y herramientas de programación.
  • Obtenga tutoría estudiantil dedicada

Prepárese para el desarrollo de aplicaciones DevOps con upGrad.

Por qué esperar

¡Aplica hoy!

Prepárate para una carrera del futuro

Aplicar ahora para Maestría en Ingeniería de Software