Название: Aprender Docker, un enfoque práctico
Автор: José Juan Sánchez Hernández
Издательство: Bookwire
Жанр: Математика
isbn: 9788426734488
isbn:
Los contenedores no han venido para sustituir a las máquinas virtuales, ya que cada tecnología es adecuada para casos de uso diferentes. Podemos decir que ambas tecnologías se complementan entre sí.
Figura 1.1. Diferencias entre contenedores y máquinas virtuales.
1.8. Arquitectura de Docker
Al inicio, Docker fue diseñado con una arquitectura monolítica, pero, más tarde, fue rediseñado a una arquitectura modular, formada por diferentes componentes que pueden ser reemplazados o incluso utilizarse en otros proyectos.
Cada uno de los componentes de Docker se desarrolla por separado y muchos de ellos forman parte del proyecto Moby. El proyecto Moby es un proyecto open source creado por Docker, Inc. en 2017, donde se desarrollan componentes y herramientas que pueden ser utilizados para crear productos basados en la tecnología de contenedores. Podemos decir que Moby es el proyecto donde se desarrollan los componentes y Docker es un producto que utiliza esos componentes:
Los principales componentes de Docker que debemos conocer son los siguientes:
En la figura 1.2, se trata de dar una visión global de cómo se relacionan los componentes que forman la arquitectura de Docker. En la figura se muestran tres bloques que representan al cliente, el host de Docker y el Registry. El host de Docker será una máquina que tiene instalado el componente Docker Engine y puede estar dentro o fuera de nuestra red local. En una instalación habitual, el cliente también estará instalado en el host de Docker, pero no es un requisito obligatorio. En los siguientes apartados de este capítulo, se irá describiendo con más detalle cada uno de estos componentes.
Figura 1.2. Componentes de la arquitectura de Docker.
1.9. Cliente de Docker
Docker utiliza una arquitectura cliente-servidor, donde una aplicación cliente interactúa con un servicio llamado Docker daemon. Un mismo cliente puede comunicarse con más de un servicio Docker daemon. La comunicación entre el cliente y el servidor se realiza a través de una API HTTP, conocida como Docker Engine API.
Las aplicaciones cliente permiten que un usuario pueda interaccionar con el servicio Docker daemon para realizar acciones como crear y ejecutar contenedores. Las aplicaciones oficiales que se pueden utilizar como cliente son Docker CLI (Command Line Interface) y Docker Compose. Aunque cualquier aplicación cliente que haga uso de la API de Docker Engine puede ser un cliente válido.
El cliente y el servidor se pueden ejecutar en la misma máquina o pueden estar en máquinas separadas. Cuando el cliente y el servidor están en la misma máquina, la comunicación entre ambos se puede realizar a través de un socket IPC o un socket TCP. Y, cuando se encuentran en máquinas separadas, se realiza a través de un socket TCP.
A continuación, se muestran dos ejemplos donde se describe a alto nivel cómo es el flujo de ejecución de un comando y cuáles son los componentes que intervienen.
Ejemplo de ejecución del comando docker pull
En la figura 1.3, se muestra el flujo de ejecución a alto nivel del comando docker pull
, que es el comando utilizado para descargar una imagen de un Docker Registry.
En este ejemplo, se realizan los siguientes pasos:
1. En primer lugar, el usuario ejecuta el comando docker pull
desde la línea de comandos y el cliente Docker CLI se comunica con el servicio Docker daemon.
2. El servicio Docker daemon se encarga de gestionar la petición al Docker Registry para descargar la imagen solicitada por el cliente.
3. La imagen se descarga del Docker Registry y se almacena en el host de Docker.
Figura 1.3. Ejemplo del flujo de ejecución a alto nivel del comando docker pull.
Ejemplo de ejecución del comando docker run
En la figura 1.4, se muestra el flujo de ejecución a alto nivel del comando docker run
, que es el comando utilizado para crear y ejecutar un contenedor a partir de una imagen.
En este ejemplo, se realizan los siguientes pasos:
1. En primer lugar, el usuario ejecuta el comando docker run
desde la línea de comandos y el cliente Docker CLI se comunica con el servicio Docker daemon.
2. El servicio Docker daemon comprueba si la imagen que ha seleccionado el usuario para crear el contenedor se encuentra en el host de Docker. Si la imagen no estuviese en el host, entonces la descargaría automáticamente del Docker Registry.
3. Se crea un contenedor a partir de la imagen seleccionada СКАЧАТЬ