Docker ha revolucionado es sistema de trabajo en la ultima década y por ello vamos explicar su funcionamiento y cual ha sido el motivo de su éxito.
Origen
En marzo de 2013, dotCloud lanzó Docker oficialmente como un proyecto interno. Su propósito era homogeneizar el entorno de ejecución de las aplicaciones. Las diferencias entre los entornos de desarrollo, pruebas y producción solían ser un problema. Docker buscaba resolver esto.
El logo de Docker se caracteriza por una ballena que lleva contenedores, lo cual representa la estandarización y la portabilidad en el ámbito del software. Esta elección se inspira en el sistema global de transporte de mercancías. A nivel mundial, se utilizan los contenedores marítimos para trasladar eficientemente una amplia gama de productos, desde alimentos hasta tecnología, aprovechando sus medidas estandarizadas. La capacidad de estos contenedores para moverse fácilmente de un lugar a otro, ajustándose a diferentes barcos y puertos, simboliza el objetivo de Docker: simplificar el despliegue de aplicaciones en cualquier entorno para que operen de forma consistente y predecible. De este modo, Docker busca emular la manera en que los contenedores físicos protegen y transportan sus cargas globalmente, sin importar el destino.
Funcionamiento
Docker opera utilizando el Kernel del sistema operativo, responsable de repartir o asignar los recursos de hardware a los procesos en ejecución.

Considera el sistema operativo como un amplio edificio de oficinas (el hardware), siendo el kernel su administrador. Las oficinas son contenedores Docker, y quienes trabajan ahí son los procesos que corren dentro de estos contenedores.
El kernel, como administrador del edificio, garantiza que cada oficina (contenedor) disponga de los recursos necesarios, como electricidad, agua y acceso a internet (es decir, CPU, memoria y conexión de red). Si una oficina requiere más recursos por tener más personal o equipo (procesos con mayor demanda de cómputo), el administrador proporciona lo necesario sin perjudicar a las demás oficinas.
Así, Docker facilita que cada contenedor acceda a los recursos requeridos para su correcto funcionamiento, evitando conflictos con otros contenedores en el mismo sistema operativo.
Conceptos básico
- Contenedores: Son instancias ejecutables ligeras y portátiles que contienen todo lo necesario para ejecutar una aplicación: el código, bibliotecas, variables de entorno y archivos de configuración. Los contenedores son aislados entre sí y del sistema anfitrión. La vida contenedor depende del proceso si el proceso que esta en su interior para el contenedor también para.
- Imágenes de Docker: Son plantillas de solo lectura usadas para crear contenedores. Una imagen incluye todo lo necesario para ejecutar una aplicación, incluyendo el código, el entorno de ejecución, las bibliotecas y las dependencias. Las imágenes se construyen a partir de un archivo Dockerfile y se pueden almacenar en un registro de Docker.
- Dockerfile: Es un archivo de texto que contiene todas las instrucciones para construir una imagen de Docker. Incluye comandos para instalar paquetes, copiar archivos y configurar el entorno. Aqui puedes ver como se construyen las imagenes con Dockerfile
- Registros de Docker: Son repositorios que almacenan imágenes de Docker. Docker Hub es el registro público de Docker por defecto, pero los usuarios pueden configurar sus propios registros privados. Los registros permiten compartir imágenes con otros usuarios o desplegar imágenes en distintos entornos. Este es el registro oficial de Docker
- Volúmenes: Son sistemas de almacenamiento persistentes y gestionables usados para almacenar datos generados por y usados por los contenedores de Docker. Permiten preservar datos incluso cuando los contenedores se eliminan, y pueden compartirse entre varios contenedores.
- Redes de Docker: Permiten conectar contenedores entre sí y con el mundo exterior. Docker maneja la interconexión entre contenedores para permitir la comunicación interna y también ofrece configuraciones para conectar contenedores al host o a otras redes.
Conclusión
En conclusión, Docker ha revolucionado el mundo del desarrollo de software al ofrecer una solución eficiente para la creación, despliegue y ejecución de aplicaciones. Al utilizar contenedores, Docker permite que las aplicaciones se ejecuten de manera aislada y segura, garantizando que funcionen uniformemente en cualquier entorno. Este enfoque no solo mejora la portabilidad y la eficiencia, sino que también simplifica el proceso de integración y despliegue continuo, lo que facilita a los desarrolladores y a los equipos de operaciones trabajar de manera más ágil y coordinada.
