Skip to content

Tema:

Introducción a Docker Container Engine


Introducción

Docker ha revolucionado el desarrollo y despliegue de aplicaciones al introducir un enfoque sencillo, eficiente y portátil para ejecutar software. Su tecnología de contenedores permite empaquetar aplicaciones y sus dependencias en un entorno aislado, garantizando que se ejecuten de manera consistente en cualquier lugar: desde una computadora local hasta servidores en la nube. En este tema, exploraremos los fundamentos de Docker, sus componentes clave y cómo ha transformado el panorama de la infraestructura tecnológica moderna.


Objetivo

Objetivo General:

  • Comprender qué es Docker Container Engine, su funcionamiento básico, sus componentes principales y su importancia en el ecosistema de contenedores, proporcionando una base sólida para empezar a utilizar esta tecnología en proyectos reales.

¿Qué es Docker?

Docker es una plataforma abierta para desarrollar, enviar y ejecutar aplicaciones. Docker le permite separar sus aplicaciones de su infraestructura para que pueda entregar software rápidamente. Con Docker, puede administrar su infraestructura de la misma manera que administra sus aplicaciones. Al aprovechar las metodologías de Docker para enviar, probar e implementar código, puede reducir significativamente la demora entre la escritura del código y su ejecución en producción.

La plataforma Docker

Docker ofrece la posibilidad de empaquetar y ejecutar una aplicación en un entorno poco aislado llamado contenedor. El aislamiento y la seguridad le permiten ejecutar muchos contenedores simultáneamente en un host determinado. Los contenedores son livianos y contienen todo lo necesario para ejecutar la aplicación, por lo que no necesita depender de lo que esté instalado en el host. Puede compartir contenedores mientras trabaja y estar seguro de que todos con quienes comparte obtienen el mismo contenedor que funciona de la misma manera.

Docker proporciona herramientas y una plataforma para administrar el ciclo de vida de sus contenedores:

  • Desarrolle su aplicación y sus componentes de soporte utilizando contenedores.
  • El contenedor se convierte en la unidad para distribuir y probar su aplicación.
  • Cuando esté listo, implemente su aplicación en su entorno de producción, como un contenedor o un servicio orquestado. Esto funciona de la misma manera independientemente de si su entorno de producción es un centro de datos local, un proveedor de nube o una combinación de ambos.

¿Para qué puedo utilizar Docker?

Entrega rápida y consistente de sus aplicaciones

Docker optimiza el ciclo de vida del desarrollo al permitir que los desarrolladores trabajen en entornos estandarizados utilizando contenedores locales que proporcionan sus aplicaciones y servicios. Los contenedores son ideales para flujos de trabajo de integración continua y entrega continua (CI/CD).

Consideremos el siguiente escenario de ejemplo:

  • Sus desarrolladores escriben código localmente y comparten su trabajo con sus colegas utilizando contenedores Docker.
  • Usan Docker para impulsar sus aplicaciones a un entorno de prueba y ejecutar pruebas automatizadas y manuales.
  • Cuando los desarrolladores encuentran errores, pueden corregirlos en el entorno de desarrollo y volver a implementarlos en el entorno de prueba para realizar pruebas y validaciones.
  • Una vez finalizadas las pruebas, entregar la solución al cliente es tan sencillo como enviar la imagen actualizada al entorno de producción.

Implementación y escalabilidad responsivas

La plataforma basada en contenedores de Docker permite cargas de trabajo altamente portátiles. Los contenedores de Docker pueden ejecutarse en la computadora portátil local de un desarrollador, en máquinas físicas o virtuales en un centro de datos, en proveedores de la nube o en una combinación de entornos.

La portabilidad y la naturaleza liviana de Docker también facilitan la gestión dinámica de cargas de trabajo, ampliando o eliminando aplicaciones y servicios según lo dicten las necesidades del negocio, casi en tiempo real.

Ejecutar más cargas de trabajo en el mismo hardware

Docker es ligero y rápido. Ofrece una alternativa viable y rentable a las máquinas virtuales basadas en hipervisores, de modo que puede utilizar más capacidad de su servidor para alcanzar sus objetivos comerciales. Docker es perfecto para entornos de alta densidad y para implementaciones pequeñas y medianas en las que necesita hacer más con menos recursos.

Arquitectura de Docker

Docker utiliza una arquitectura cliente-servidor. El cliente Docker se comunica con el demonio Docker, que se encarga de la tarea pesada de crear, ejecutar y distribuir los contenedores Docker. El cliente y el demonio Docker pueden ejecutarse en el mismo sistema, o puedes conectar un cliente Docker a un demonio Docker remoto. El cliente y el demonio Docker se comunican mediante una API REST, a través de sockets UNIX o una interfaz de red. Otro cliente Docker es Docker Compose, que te permite trabajar con aplicaciones que constan de un conjunto de contenedores.

RKE

El demonio Docker

El demonio Docker ( dockerd) escucha las solicitudes de la API de Docker y administra objetos Docker, como imágenes, contenedores, redes y volúmenes. Un demonio también puede comunicarse con otros demonios para administrar los servicios de Docker.

El cliente Docker

El cliente Docker ( docker) es la forma principal en la que muchos usuarios de Docker interactúan con Docker. Cuando se utilizan comandos como docker run, el cliente envía estos comandos a dockerd, que los ejecuta. El comando docker utiliza la API de Docker. El cliente Docker puede comunicarse con más de un demonio.

Docker Desktop

Docker Desktop es una aplicación fácil de instalar para su entorno Mac, Windows o Linux que le permite crear y compartir aplicaciones y microservicios en contenedores. Docker Desktop incluye el demonio Docker ( dockerd), el cliente Docker ( docker), Docker Compose, entre otros componentes.

Registros de Docker

Un registro de Docker almacena imágenes de Docker. Docker Hub es un registro público que cualquiera puede usar y Docker busca imágenes en Docker Hub de manera predeterminada. Incluso puedes ejecutar tu propio registro privado.

Cuando utiliza los comandos docker pull o docker run, Docker extrae las imágenes necesarias de su registro configurado. Cuando utiliza el comando docker push , Docker envía su imagen a su registro configurado.

Objetos Docker

Cuando utiliza Docker, crea y utiliza imágenes, contenedores, redes, volúmenes, complementos y otros objetos. Esta sección es una breve descripción general de algunos de esos objetos.

Imágenes

Una imagen es una plantilla de solo lectura con instrucciones para crear un contenedor Docker. A menudo, una imagen se basa en otra imagen, con alguna personalización adicional. Por ejemplo, puedes crear una imagen que se base en la ubuntu imagen, pero que instale el servidor web Apache y tu aplicación, así como los detalles de configuración necesarios para que tu aplicación se ejecute.

Puede crear sus propias imágenes o puede utilizar únicamente las creadas por otros y publicadas en un registro. Para crear su propia imagen, debe crear un Dockerfile con una sintaxis simple para definir los pasos necesarios para crear la imagen y ejecutarla. Cada instrucción en un Dockerfile crea una capa en la imagen. Cuando cambia el Dockerfile y reconstruye la imagen, solo se reconstruyen las capas que han cambiado. Esto es parte de lo que hace que las imágenes sean tan livianas, pequeñas y rápidas, en comparación con otras tecnologías de virtualización.

Contenedores

Un contenedor es una instancia ejecutable de una imagen. Puede crear, iniciar, detener, mover o eliminar un contenedor mediante la API o la CLI de Docker. Puede conectar un contenedor a una o más redes, adjuntarle almacenamiento o incluso crear una nueva imagen en función de su estado actual.

De forma predeterminada, un contenedor está relativamente bien aislado de otros contenedores y de su máquina host. Puede controlar el grado de aislamiento de la red, el almacenamiento u otros subsistemas subyacentes de un contenedor respecto de otros contenedores o de la máquina host.

Un contenedor se define por su imagen y por las opciones de configuración que le proporciones cuando lo creas o lo inicias. Cuando se elimina un contenedor, desaparecen todos los cambios en su estado que no estén almacenados en el almacenamiento persistente.

El siguiente comando ejecuta un contenedor de ubuntu, se conecta de forma interactiva a su sesión de línea de comandos local y ejecuta /bin/bash.

docker run -i -t ubuntu /bin/bash