Introducción a Docker: qué es, arquitectura, flujo de trabajo
Publicado: 2020-04-27Tabla de contenido
Historia de la virtualización
No hace mucho tiempo, implementar un servicio era un proceso lento y doloroso. El proceso involucró la escritura del código por parte del equipo de desarrollo y luego su implementación por parte del equipo de operaciones en máquinas de metal. El equipo de operaciones solía tener mucho trabajo, ya que tenían que buscar compiladores de lenguaje, bibliotecas y parches para que el código funcionara.
Si el proceso tuviera errores o fallas, tendría que comenzar de nuevo: el equipo de desarrollo corregiría los errores o fallas y el equipo de operaciones comenzaría nuevamente a implementar el código.
Las cosas mejoraron un poco cuando se desarrollaron los hipervisores. Entonces, ¿qué son los hipervisores? Se trata de un conjunto de máquinas virtuales (VM) que pueden estar en funcionamiento continuo o apagarse a intervalos regulares, especialmente cuando no están en uso. Las máquinas virtuales definitivamente ayudaron al acelerar el proceso de corrección de errores y la implementación del código, pero aún tenían algunos problemas. Los contenedores Docker se convirtieron en los verdaderos revolucionarios. Incluso abordaron los problemas que existían en las máquinas virtuales.
Leer: Kubernetes vs. Docker: diferencias principales
¿Qué es Docker?
Es una plataforma de código abierto que utilizan los desarrolladores de todo el mundo para ejecutar, empaquetar y distribuir aplicaciones. Docker hace que el proceso de encapsulación de aplicaciones desde el primer paso hasta el último, sea muy fácil y eficiente. Para comprender mejor Docker, deberá comprender qué son los contenedores y cómo funcionan.
Un contenedor no es más que un paquete independiente, ligero y ejecutable de una parte del software que viene con todo lo necesario para ejecutarlo. Los contenedores no dependen de ninguna manera de las plataformas. Por lo tanto, Docker es compatible con máquinas basadas en Windows y Linux. Además, incluso puede ejecutar Docker en una máquina virtual, si surge la necesidad. El objetivo básico que pretende alcanzar Docker es permitir que los desarrolladores utilicen la arquitectura distribuida para ejecutar aplicaciones de microservicios.

A diferencia de las máquinas virtuales que solían realizar la abstracción de hardware, Docker sube un nivel y realiza la abstracción de un conjunto diferente de recursos en el nivel del sistema operativo. Esto proporciona varios beneficios, incluida la separación de la infraestructura y la portabilidad de las aplicaciones, entre otros. En otras palabras, a diferencia de las máquinas virtuales que solían abstraer el servidor de hardware, el enfoque basado en contenedores de Docker funciona abstrayendo el núcleo del sistema operativo. Esta es una gran alternativa a la virtualización que conduce a la creación más rápida de instancias ligeras. Docker está disponible en dos versiones:
Edición empresarial (EE):
Esta versión está diseñada específicamente para equipos de TI y desarrollo empresarial. Esta versión se utiliza para desarrollar, enviar y ejecutar aplicaciones.
Edición comunitaria (CE):
Esta versión es utilizada por individuos y equipos pequeños que están explorando aplicaciones basadas en contenedores o comenzando con Docker.
Leer: Ideas y temas de proyectos de pila completa
Flujo de trabajo de la ventana acoplable
En esta sección, nos centraremos en Docker Engine, así como en sus diferentes componentes. Esto nos ayudará a comprender mejor cómo funciona Docker antes de pasar a la arquitectura de Docker. Docker Engine es el poder que permite que el desarrollo realice varias funciones utilizando esta aplicación basada en contenedores. Puede utilizar los componentes que se enumeran a continuación para crear, empaquetar, enviar y ejecutar aplicaciones.
1. Demonio Docker
Es el proceso en segundo plano que funciona continuamente para ayudarlo a administrar imágenes, volúmenes de almacenamiento, redes y contenedores. Siempre está buscando solicitudes de la API de Docker para procesarlas.
2. CLI de Docker
Es un cliente de interfaz que interactúa con Docker Daemon. Ayuda a los desarrolladores a simplificar el proceso de gestión de instancias de contenedores. Es una de las principales razones por las que los desarrolladores prefieren Docker a otras aplicaciones similares .

3. API de reposo del motor Docker
Facilita las interacciones entre el demonio Docker y las aplicaciones. Por lo general, se requiere un cliente HTTP para acceder a estas API.
Arquitectura acoplable
La arquitectura Docker es una arquitectura basada en cliente-servidor. Tiene tres componentes principales que se mencionan a continuación:
- Anfitrión acoplable
- cliente acoplable
- Registro acoplable
- Objetos acoplables
En la fase inicial, el cliente de Docker interactúa con el demonio, que es responsable de realizar gran parte del trabajo relacionado con el desarrollo, la ejecución y la distribución de contenedores de Docker.
El demonio de Docker y el cliente pueden ejecutarse en un solo sistema o el desarrollador puede usar un demonio remoto para conectarlo con un cliente de Docker local. Rest API se utiliza para establecer la comunicación entre el demonio Docker y el cliente. Esto se puede hacer a través de una interfaz de red o de sockets UNIX.
Analicemos ahora los componentes de la arquitectura de Docker en detalle.
Lea también: ¿Por qué convertirse en un desarrollador de pila completa?
1. Anfitrión acoplable
Un host de Docker es responsable de ejecutar el demonio de Docker. Docker Daemon entretiene las solicitudes de API, incluida la compilación y la ejecución de Docker, entre otras. También administra imágenes, redes, contenedores y otros objetos de Docker. Los demonios pueden comunicarse entre sí para administrar diferentes servicios de Docker.
2. Cliente acoplable
No es más que el método que utilizan los usuarios para interactuar con Docker. El cliente de Docker envía nuestras solicitudes, como la ejecución de Docker, y las compilaciones de Docker al demonio de Docker. Una característica muy importante del cliente Docker es que puede comunicarse con varios demonios.
3. Registro Docker
Un registro es una aplicación del lado del servidor que es escalable y sin estado. No solo almacena imágenes de Docker, sino que también permite que los desarrolladores las distribuyan. Docker nos brinda la flexibilidad de crear nuestras propias imágenes, o hay registros públicos disponibles que podemos usar. Estos registros incluyen Docker Cloud y Docker Hub , entre otros.
La configuración de Docker es tal que siempre recurre a Docker Hub y otros registros públicos para buscar imágenes. Sin embargo, tenemos la opción de crear nuestro propio registro. Por lo tanto, podemos extraer las imágenes requeridas usando nuestros propios registros con la ayuda de los comandos docker run y docker pull. El comando Docker push inserta la imagen requerida en el registro que creamos.

4. Objetos acoplables
Usamos y creamos varios objetos mientras usamos Docker. Estos objetos incluyen contenedores, imágenes, complementos, volúmenes, redes y otros.
5. Imágenes acoplables
Una imagen de Docker no es más que una plantilla de solo lectura que nos proporciona las instrucciones necesarias para crear un contenedor. En muchas ocasiones, una imagen tiene una conexión con otra imagen. Lo que diferencia a dos imágenes es la capa adicional de personalización. Para decirlo de otra manera, una imagen también se puede definir como una instantánea inmutable de un contenedor. Las imágenes son pequeñas, ligeras y rápidas.
6. Contenedores Docker
Sigamos un enfoque diferente para comprender los contenedores Docker. Entonces, si una imagen pudiera usarse para representar una clase, un contenedor podría ser su instancia. En otras palabras, un contenedor es un objeto de tiempo de ejecución. Podemos crear, iniciar, mover, detener o eliminar contenedores con la ayuda de Docker CLI o API. Los contenedores también se pueden adjuntar al almacenamiento y conectarse a una o más de una red. Dependiendo del estado actual de un contenedor, también podemos crear una nueva imagen.
Conclusión
Ahora que sabe qué es la arquitectura Docker y sus componentes, está en una mejor posición para comprender el aumento de su popularidad. Simplifica la gestión de la infraestructura y ayuda a que las instancias sean más rápidas, ligeras y resistentes.
Si está interesado en obtener más información sobre la codificación de pila completa, consulte el Diploma PG de upGrad & IIIT-B en desarrollo de software de pila completa, que está diseñado para profesionales que trabajan y ofrece más de 500 horas de capacitación rigurosa, más de 9 proyectos y tareas. Estado de ex alumnos de IIIT-B, proyectos finales prácticos prácticos y asistencia laboral con las mejores empresas.