Arquitectura de Docker: ¿Por qué es importante?



Este blog analiza la arquitectura de la ventana acoplable y sus diversos componentes. Destaca las características de la ventana acoplable que nos dice el motivo de su popularidad.

Muchos de nosotros creemos que Docker es una parte integral de . Entonces, detrás de esta increíble herramienta, tiene que haber una arquitectura asombrosa. En este blog, cubriré todo lo que debe saber sobre la arquitectura Docker. Estos son los puntos que discutiré aquí:

cómo crear una matriz de objetos
  1. Virtualización tradicional vs Docker
  2. Flujo de trabajo de Docker
  3. Arquitectura de Docker

Virtualización tradicional Vs Docker

¿Qué es una VM (máquina virtual)?

Una máquina virtual es un servidor virtual que emula un servidor de hardware. Una máquina virtual depende del hardware físico del sistema para emular exactamente el mismo entorno en el que instala sus aplicaciones. Dependiendo de su caso de uso, puede utilizar una máquina virtual del sistema (que ejecuta un sistema operativo completo como un proceso, lo que le permite sustituir una máquina real por una máquina virtual), o procesar máquinas virtuales que le permiten ejecutar aplicaciones informáticas solo en la virtual. ambiente.





Anteriormente, solíamos crear máquinas virtuales, y cada VM tenía un sistema operativo que ocupaba mucho espacio y lo hacía pesado.

¿Qué es Docker?

Docker es un proyecto de código abierto que ofrece una solución de desarrollo de software conocida como contenedores. Para comprender Docker, necesita saber qué son los contenedores. De acuerdo a Estibador , un contenedor es un paquete ligero, autónomo y ejecutable de un software que incluye todo lo necesario para ejecutarlo.



Los contenedores son independientes de la plataforma y, por lo tanto, Docker puede ejecutarse en plataformas basadas en Windows y Linux. De hecho, Docker también se puede ejecutar dentro de una máquina virtual si surge la necesidad de hacerlo. El objetivo principal de Docker es que le permite ejecutar aplicaciones de microservicio en una arquitectura distribuida.

En comparación con las máquinas virtuales, la plataforma Docker aumenta la abstracción de recursos desde el nivel de hardware hasta el nivel del sistema operativo. Esto permite la realización de los diversos beneficios de los contenedores, p. Ej. portabilidad de aplicaciones, separación de infraestructura y microservicios autónomos.

En otras palabras, mientras que las máquinas virtuales abstraen todo el servidor de hardware, los contenedores abstraen el kernel del sistema operativo. Este es un enfoque completamente diferente para la virtualización y da como resultado instancias mucho más rápidas y ligeras..



vm vs docker - arquitectura de docker - edureka

Flujo de trabajo de Docker

Primero, echemos un vistazo a Docker Engine y sus componentes para tener una idea básica de cómo funciona el sistema. Docker Engine le permite desarrollar, ensamblar, enviar y ejecutar aplicaciones utilizando los siguientes componentes:

  1. Demonio de Docker : Un proceso en segundo plano persistente que administra imágenes, contenedores, redes y volúmenes de almacenamiento de Docker. El demonio de Docker escucha constantemente las solicitudes de la API de Docker y las procesa.

  2. API REST de Docker Engine : Las aplicaciones utilizan una API para interactuar con el demonio de Docker. Puede acceder a ella un cliente HTTP.

  3. CLI de Docker : Un cliente de interfaz de línea de comandos para interactuar con el demonio de Docker. Simplifica significativamente la forma en que administra las instancias de contenedores y es una de las razones clave por las que a los desarrolladores les encanta usar Docker.

Al principio, el cliente de Docker habla con el demonio de Docker, que realiza el trabajo pesado del edificio, la ejecución y la distribución de nuestros contenedores Docker. Básicamente, tanto el cliente como el demonio de Docker pueden ejecutarse en el mismo sistema. También podemos conectar un cliente Docker a undemonio de Docker remoto. Además, mediante el uso de una API REST, el cliente y el demonio de Docker se comunican a través de sockets UNIX o una interfaz de red.

Arquitectura de Docker

La arquitectura de Docker utiliza un modelo cliente-servidor y consta del cliente de Docker, el host de Docker, los componentes de red y almacenamiento, y el Hub / Registro de Docker. Analicemos cada uno de estos en detalle.

Cliente de Docker

Los usuarios de Docker pueden interactuar con Docker a través de un cliente. Cuando se ejecuta cualquier comando de docker, el cliente los envía al demonio dockerd, que los ejecuta. Los comandos de Docker utilizan la API de Docker. Es posible que el cliente Docker se comunique con más de un demonio.

Host de Docker

El host de Docker proporciona un entorno completo para ejecutar y ejecutar aplicaciones. Se compone del demonio de Docker, imágenes, contenedores, redes y almacenamiento. Como se mencionó anteriormente, el demonio es responsable de todas las acciones relacionadas con el contenedor y recibe comandos a través de la CLI ola API REST. También puede comunicarse con otros demonios para administrar sus servicios.

Objetos Docker

1. Imágenes

Las imágenes no son más que una plantilla binaria de solo lectura que puede construir contenedores. También contienen metadatos que describen las capacidades y necesidades del contenedor. Las imágenes se utilizan para almacenar y enviar aplicaciones. Una imagen puede usarse por sí sola para construir un contenedor o personalizarse para agregar elementos adicionales para extender la configuración actual.

Puede compartir las imágenes del contenedor entre equipos dentro de una empresa con la ayuda de un registro de contenedor privado o compartirlo con el mundo mediante un registro público como Docker Hub. Las imágenes son el elemento central de la experiencia de Docker, ya que permiten la colaboración entre desarrolladores de una manera que antes no era posible.

2. Contenedores

Los contenedores son una especie de entornos encapsulados en los que ejecuta aplicaciones. El contenedor se define por la imagen y cualquier opción de configuración adicional proporcionada al iniciar el contenedor, incluidas, entre otras, las conexiones de red y las opciones de almacenamiento. Los contenedores solo tienen acceso a los recursos que están definidos en la imagen, a menos que se defina un acceso adicional al construir la imagen en un contenedor.

También puede crear una nueva imagen basada en el estado actual de un contenedor. Dado que los contenedores son mucho más pequeños que las máquinas virtuales, se pueden girar en cuestión de segundos y dan como resultado una densidad de servidor mucho mejor

3. Redes

La red Docker es un pasaje a través del cual se comunican todos los contenedores aislados. Hay principalmente cinco controladores de red en la ventana acoplable:

    1. Puente : Es el controlador de red predeterminado para un contenedor. Utiliza esta red cuando su aplicación se ejecuta en contenedores independientes, es decir, varios contenedores que se comunican con el mismo host de la ventana acoplable.

    2. Anfitrión : Este controlador elimina el aislamiento de red entre los contenedores y el host de la ventana acoplable. Puede usarlo cuando no necesite ningún aislamiento de red entre el host y el contenedor.

    3. Cubrir : Esta red permite que los servicios de enjambre se comuniquen entre sí. Lo usa cuando desea que los contenedores se ejecuten en diferentes hosts de Docker o cuando desea formar servicios de enjambre mediante múltiples aplicaciones.

    4. Ninguna : Este controlador desactiva todas las redes.

    5. macvlan : Este controlador asigna direcciones mac a los contenedores para que parezcan dispositivos físicos. Enruta el tráfico entre contenedores a través de sus direcciones mac. Utilice esta red cuando desee que los contenedores se vean como un dispositivo físico, por ejemplo, al migrar una configuración de VM.

4. Almacenamiento

Puede almacenar datos dentro de la capa de escritura de un contenedor, pero requiere un controlador de almacenamiento. Al no ser persistente, perece cuando el contenedor no está funcionando. Además, no es fácil transferir estos datos. Con respecto al almacenamiento persistente, Docker ofrece cuatro opciones:

    1. Volúmenes de datos : Brindan la capacidad de crear almacenamiento persistente, con la capacidad de cambiar el nombre de los volúmenes, enumerar los volúmenes y también enumerar el contenedor que está asociado con el volumen. Los volúmenes de datos se colocan en el sistema de archivos del host, fuera del mecanismo de copia en escritura de los contenedores y son bastante eficientes.

    2. Contenedor de volumen : Es un enfoque alternativo en el que un contenedor dedicado aloja un volumen y lo monta en otros contenedores. En este caso, el contenedor de volumen es independiente del contenedor de la aplicación y, por lo tanto, puede compartirlo en más de un contenedor.

    3. Montajes de directorio : Otra opción es montar el directorio local de un host en un contenedor. En los casos mencionados anteriormente, los volúmenes tendrían que estar dentro de la carpeta de volúmenes de Docker, mientras que cuando se trata de montajes de directorio, cualquier directorio de la máquina host se puede utilizar como fuente para el volumen.

    4. Complementos de almacenamiento : Los complementos de almacenamiento brindan la capacidad de conectarse a plataformas de almacenamiento externas. Estos complementos asignan el almacenamiento del host a una fuente externa, como una matriz de almacenamiento o un dispositivo. Puede ver una lista de complementos de almacenamiento en la página de complementos de Docker.

Registro de Docker

Los registros de Docker son servicios que proporcionan ubicaciones desde donde puede almacenar y descargar imágenes. En otras palabras, un registro de Docker contiene repositorios de Docker que alojan una o más imágenes de Docker. Los registros públicos incluyen dos componentes, a saber, Docker Hub y Docker Cloud. También puede utilizar Registros privados. Los comandos más comunes cuando se trabaja con registros incluyen: docker push, docker pull, docker run

Ahora que ha entendido la arquitectura de Docker, consulte este 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 Edureka DevOps Certification Training ayuda a los alumnos a comprender qué es DevOps y a adquirir experiencia en diversos procesos y herramientas de DevOps, como Puppet, Jenkins, Nagios, Ansible, Chef, Saltstack y GIT para automatizar varios pasos en SDLC.

Tienes una pregunta para nosotros? Por favor, menciónelo en la sección de comentarios de esta 'Arquitectura de Docker' y nos comunicaremos con usted.