Docker Architecture y sus componentes para principiantes

Familiaricémonos con la arquitectura de Docker y sus componentes esenciales.

Supongo que tiene una comprensión básica de Docker. Si no, puede consultar este artículo anterior.

Creo que comprende la importancia de Docker en DevOps. Ahora, detrás de esta fantástica herramienta, tiene que haber una arquitectura sorprendente y bien pensada. ¿no es así?

Pero antes de hablar de eso, permítanme mostrar los sistemas de virtualización anteriores y actuales.

Virtualización tradicional frente a virtualización de nueva generación

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

Ahora, en el caso del contenedor docker, tiene un solo sistema operativo y los recursos se comparten entre los contenedores. Por lo tanto, es liviano y arranca en segundos.

Arquitectura acoplable

A continuación se muestra el diagrama simple de una arquitectura Docker.

Déjame explicarte los componentes de una arquitectura docker.

Motor acoplable

Es la parte central de todo el sistema Docker. Docker Engine es una aplicación que sigue una arquitectura cliente-servidor. Se instala en la máquina host. Hay tres componentes en Docker Engine:

  • Servidor: Es el demonio docker llamado dockerd. Puede crear y administrar imágenes acoplables. Contenedores, redes, etc.
  • Rest API: se utiliza para instruir al demonio docker qué hacer.
  • Interfaz de línea de comandos (CLI): es un cliente que se utiliza para ingresar comandos de la ventana acoplable.

Cliente acoplable

Los usuarios de Docker pueden interactuar con Docker a través de un cliente. Cuando se ejecuta cualquier comando docker, el cliente lo envía al daemon dockerd, que lo lleva a cabo. Los comandos de Docker utilizan la API de Docker. El cliente Docker puede comunicarse con más de un daemon.

Registros acoplables

Es la ubicación donde se almacenan las imágenes de Docker. Puede ser un registro docker público o un registro docker privado. Docker Hub es el lugar por defecto de las imágenes docker, el registro público de sus tiendas. También puede crear y ejecutar su propio registro privado.

Cuando ejecuta los comandos docker pull o docker run, la imagen de docker requerida se extrae del registro configurado. Cuando ejecuta el comando push de la ventana acoplable, la imagen de la ventana acoplable se almacena en el registro configurado.

Objetos acoplables

Cuando trabaja con Docker, utiliza imágenes, contenedores, volúmenes, redes; todos estos son objetos Docker.

Imágenes

Las imágenes de Docker son plantillas de solo lectura con instrucciones para crear un contenedor de Docker. La imagen de Docker se puede extraer de un concentrador de Docker y usar tal cual, o puede agregar instrucciones adicionales a la imagen base y crear una imagen de Docker nueva y modificada. Puede crear sus propias imágenes acoplables también utilizando un archivo acoplable. Cree un dockerfile con todas las instrucciones para crear un contenedor y ejecútelo; creará su imagen acoplable personalizada.

La imagen de Docker tiene una capa base que es de solo lectura y la capa superior se puede escribir. Cuando edita un dockerfile y lo reconstruye, solo la parte modificada se reconstruye en la capa superior.

Contenedores

Después de ejecutar una imagen acoplable, se crea un contenedor acoplable. Todas las aplicaciones y su entorno se ejecutan dentro de este contenedor. Puede usar la API o la CLI de Docker para iniciar, detener y eliminar un contenedor de Docker.

A continuación se muestra un comando de muestra para ejecutar un contenedor docker de ubuntu:

docker run -i -t ubuntu /bin/bash

Volúmenes

Los datos persistentes generados por Docker y utilizados por los contenedores de Docker se almacenan en Volúmenes. Están completamente administrados por Docker a través de Docker CLI o Docker API. Los volúmenes funcionan en contenedores de Windows y Linux. En lugar de conservar los datos en la capa de escritura de un contenedor, siempre es una buena opción usar volúmenes para ello. El contenido del volumen existe fuera del ciclo de vida de un contenedor, por lo que usar el volumen no aumenta el tamaño de un contenedor.

Puede usar el indicador -v o –mount para iniciar un contenedor con un volumen. En este comando de muestra, está utilizando el volumen geekvolume con el contenedor kirukiru.es.

docker run -d --name kirukiru.es  -v geekvolume:/app nginx:latest

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 Docker:

  • 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 acoplable.
  • Host: este controlador elimina el aislamiento de red entre los contenedores de Docker y el host de Docker. Se usa cuando no necesita ningún aislamiento de red entre el host y el contenedor.
  • Superposición: esta red permite que los servicios de enjambre se comuniquen entre sí. Se usa cuando los contenedores se ejecutan en diferentes hosts de Docker o cuando los servicios de enjambre están formados por múltiples aplicaciones.
  • Ninguno: este controlador desactiva todas las redes.
  • macvlan: este controlador asigna la dirección mac a los contenedores para que parezcan dispositivos físicos. El tráfico se enruta entre contenedores a través de sus direcciones mac. Esta red se usa cuando desea que los contenedores se vean como un dispositivo físico, por ejemplo, al migrar una configuración de VM.
  • Conclusión

    Espero que esto le dé una idea sobre la arquitectura de Docker y sus componentes esenciales. Navegue por Docker para obtener más información y, si está interesado en recibir capacitación práctica, consulte esto Curso Docker Docker.

    ¿Te gustó leer el artículo? ¿Qué tal compartir con el mundo?