En la sección anterior, sentamos las bases para entender qué es un contenedor y comprendimos algunas de las diferencias clave entre las máquinas virtuales y los contenedores. En esta sección, profundizaremos específicamente en cómo Docker simplifica el proceso de construcción y despliegue de contenedores.
Una de las razones clave por las que Docker ha sido líder de la industria en el espacio de contenedores es que crea herramientas sencillas y un enfoque de empaquetado universal que agrupa todas las dependencias de la aplicación dentro de un contenedor, el cual luego se ejecuta en el Docker Engine.
¿Qué es el Docker Engine?
El Docker Engine permite que las aplicaciones contenedorizadas se ejecuten de manera consistente en cualquier lugar y sobre cualquier infraestructura, resolviendo problemas de dependencias para los equipos de desarrollo y operaciones, y eliminando el problema de "¡funciona en mi laptop!". El Docker Engine abarca un conjunto completo de características y herramientas para ayudar a los usuarios a ser lo más eficientes posible al trabajar con contenedores. Las tres características y capacidades clave impulsadas por el Docker Engine se pueden resumir de la siguiente manera:
Impulsado por containerd, que es un tiempo de ejecución de contenedores (container runtime) estándar de la industria con énfasis en la simplicidad, robustez y portabilidad.
Integración con Buildkit, que es la característica más utilizada de Docker Engine. Docker Buildkit se usa principalmente para construir imágenes a partir de un Dockerfile (profundizaremos en esto en el Módulo 2).
Simplicidad y accesibilidad de la Docker CLI, que se destacará a lo largo de todo este workshop.
En términos de aportar valor comercial inmediato, el Docker Engine ayuda a las empresas de todos los tamaños a lograr los siguientes tres beneficios:
Acelera la innovación: Docker Engine constituye la base común que sustenta la plataforma Docker Enterprise, permitiendo que los desarrolladores y operadores conviertan ideas en realidad de forma rápida y segura al proporcionar la capacidad de desarrollar y enviar código de manera más rápida y eficiente.
Libertad de elección para equipos de desarrollo y operaciones: El Docker Engine soporta cualquier tipo de aplicación. Aplicaciones legadas, nativas de la nube (cloud-native), monolíticas, aplicaciones de 12 factores e incluso funciona con múltiples sistemas operativos en todos los proveedores de nube. El Docker Engine también está validado para trabajar con Kubernetes CRI.
Seguridad intrínseca: El Docker Engine fue construido pensando en la seguridad. Con Docker Content Trust y la validación FIPS 140-2, los usuarios de Docker Engine pueden ejecutar aplicaciones contenedorizadas en entornos altamente regulados.
Descripción General de Docker Engine

Bajo el capó, Docker Engine es una aplicación cliente-servidor con los siguientes componentes principales:
Un servidor, que es un tipo de programa de larga duración llamado proceso demonio (daemon) (el comando
dockerd).Una API REST, que especifica las interfaces que los programas pueden usar para hablar con el demonio e instruirle qué hacer.
Una interfaz de línea de comandos (CLI) (el comando
docker).
La CLI utiliza la API REST de Docker para controlar o interactuar con el demonio de Docker a través de scripting o comandos directos de la CLI. Muchas otras aplicaciones de Docker utilizan la API y la CLI subyacentes.
El demonio crea y gestiona objetos de Docker, como imágenes, contenedores, redes y volúmenes.
Para aprender más sobre algunas de las diferentes tecnologías mencionadas en esta sección, hemos agregado enlaces para educación adicional:
- https://containerd.io/ - Para aprender más sobre containerd.
- https://docs.docker.com/engine/ - Documentación para aprender más sobre Docker Engine.
- https://docs.docker.com/develop/develop-images/build_enhancements/ - Guía de inicio para usar Docker Buildkit.
En la siguiente sección aprenderemos qué es una imagen de contenedor y cómo esto nos ayudará a entender qué es una imagen de Docker.
