🐳 Introducción y Conceptos Básicos

¿Qué es Docker?

Docker es una tecnología de virtualización ligera que permite empaquetar, distribuir y ejecutar aplicaciones en contenedores. Su principal ventaja es que hace que las aplicaciones sean portables y se ejecuten en cualquier máquina con Docker instalado, sin importar el sistema operativo subyacente.
Si aún no tienes Docker instalado, sigue esta guía: 🚀 Instalación de Docker

📌 Definición simple: Docker encapsula una aplicación y todas sus dependencias en un contenedor que se puede ejecutar en cualquier entorno sin configuraciones adicionales


🔹 ¿Qué es un Contenedor?

Para entender un contenedor en informática, imaginemos los contenedores de carga que transportan mercancías en barcos. Estos contenedores pueden llevar distintos productos, pero su formato estandarizado permite moverlos de un lado a otro sin preocuparse de qué hay dentro.

📦 En software, un contenedor funciona igual:
✅ Contiene todo lo necesario para ejecutar una aplicación (código, librerías, configuraciones).
✅ Se puede mover de un servidor a otro sin cambios.
✅ Garantiza que la aplicación funcione igual en cualquier entorno.

💡 Ejemplo práctico:
Una aplicación web necesita Java, Tomcat y ciertas configuraciones para ejecutarse correctamente. Con Docker, podemos empaquetar todo en un contenedor, de modo que funcione sin importar en qué máquina se ejecute.
Pasted image 20250330115407.png


🔹 Características de Docker

Aislamiento → Cada contenedor se ejecuta de forma independiente, lo que permite que varias aplicaciones se ejecuten simultáneamente sin conflictos.
Ligereza → No requiere un sistema operativo completo, solo las dependencias necesarias para la aplicación.
Portabilidad → Se puede ejecutar en cualquier sistema con Docker sin importar la configuración del entorno.
Seguridad → Los contenedores están aislados entre sí, evitando que afecten otras aplicaciones en el sistema.


🏗️ Arquitectura de Docker

🔹 Componentes principales

1️⃣ Docker Daemon (dockerd)

2️⃣ Docker Cliente (docker CLI)

🛠️ Elementos dentro de Docker

Elemento Descripción
🖼️ Imágenes Son las plantillas de solo lectura que contienen el sistema operativo, dependencias y aplicaciones necesarias para ejecutar un contenedor.
📦 Contenedores Son instancias en tiempo de ejecución creadas a partir de una imagen. Se pueden iniciar, detener, mover y eliminar.
Docker Registry 📂 Es un repositorio de imágenes Docker. Docker Hub es el registro público donde se pueden descargar o subir imágenes. También se pueden crear registros privados.
🌐 Docker Network Permite la comunicación entre contenedores a través de redes virtuales configuradas mediante archivos YAML.
⚙️ Docker Compose Es una herramienta para definir y ejecutar aplicaciones multi-contenedor mediante un solo archivo de configuración docker-compose.yml.
💾 Docker Volumes Se utilizan para almacenar datos persistentes de los contenedores y evitar que se pierdan al detener o eliminar un contenedor.

¿Cómo funciona todo junto?

Para que estos componentes funcionen, Docker usa un motor central llamado Docker Engine que se ejecuta en la máquina host.

1️⃣ El cliente envía comandos al Docker Daemon.
2️⃣ El Daemon construye, ejecuta y administra contenedores usando imágenes.
3️⃣ Las redes, volúmenes y registros ayudan a organizar y distribuir los contenedores de forma eficiente.

📌 Conclusión
Docker simplifica el despliegue de aplicaciones al encapsular todo en contenedores ligeros y portátiles. Gracias a su arquitectura, los desarrolladores pueden crear, probar y desplegar aplicaciones de manera rápida y eficiente. 🚀


🔹 Diferencias entre Docker y Máquinas Virtuales (VMs)

Docker NO es una máquina virtual. A diferencia de las VMs, Docker comparte el kernel del sistema operativo del host, lo que lo hace más ligero y rápido.

📌 Ejemplo:
Si tienes 10 contenedores Docker, todos usarán el mismo kernel del sistema operativo sin necesidad de virtualizar 10 sistemas completos. En cambio, si usas 10 máquinas virtuales, cada una tendrá su propio sistema operativo, lo que consume muchos más recursos.

Característica Docker (Contenedores) Máquinas Virtuales (VMs)
Virtualización A nivel de sistema operativo A nivel de hardware
Peso Ligero (usa recursos del host) Pesado (requiere SO completo)
Velocidad Arranque en segundos Arranque en minutos
Aislamiento Parcial (comparten kernel del host) Completo (cada VM tiene su propio SO)
Consumo de recursos Bajo Alto

📌 Conclusión: Docker es más eficiente que una VM porque no necesita virtualizar un sistema operativo completo, sino que comparte el kernel del sistema operativo del host.


🔹 Beneficios de Usar Docker en un Entorno de Trabajo

Bajos requisitos del sistema → Consume menos recursos que una máquina virtual.
Integración y despliegue continuos → Facilita la automatización en CI/CD.
Portabilidad rápida de la aplicación → Se puede mover entre servidores sin cambios.
Aislamiento del código → Cada aplicación tiene su propio entorno sin afectar a otras.
Entorno de desarrollo local → Permite replicar fácilmente entornos de producción en local.
Mayor eficiencia → Ahorra tiempo en configuraciones y reduce problemas de compatibilidad.


🔹 ¿Cómo funciona Docker en diferentes sistemas operativos?

Docker se basa en tecnologías de Linux, por lo que sus contenedores no pueden ejecutarse nativamente en Windows o macOS. Para poder usarlo en estos sistemas, Docker instala una máquina virtual Linux en segundo plano.

💡 Nota: Aunque Docker Desktop permite usar Docker en Windows y macOS, internamente está ejecutando un sistema Linux virtualizado.