🐳DOCKER: #1 Introducción a Docker
- Brayan Neciosup
- hace 3 días
- 2 Min. de lectura
Actualizado: hace 2 días
De los conflictos de dependencias a la portabilidad real
1. El problema antes de Docker
Antes de Docker, las aplicaciones compartían:
Dependencias
Librerías
Versiones del lenguaje
Configuraciones del sistema
Esto provocaba conflictos constantes entre proyectos y entornos.
2. Primeras soluciones: Virtual Machines
Las máquinas virtuales permitieron aislar aplicaciones en sistemas operativos independientes.
Ventajas:
Aislamiento total
Desventajas:
Arranque lento
Alto consumo de recursos
Poca escalabilidad
3. Virtual Environments en Python
Para Python, la solución fue aislar dependencias mediante entornos virtuales.
Enfoque con Pip:

Enfoque moderno con UV:

Esto resuelve conflictos de dependencias a nivel lenguaje, pero presenta limitaciones:
No aísla el sistema operativo
Depende del entorno del host
No es ideal para producción
4. ¿Qué es Docker?
Docker es una plataforma que permite empaquetar una aplicación junto con:
Sistema base
Dependencias
Librerías
Configuración
Todo en una imagen, que se ejecuta como contenedor.
5. Arquitectura de Docker

Los contenedores:
Comparten el kernel del host
Son livianos
Arrancan en segundos
6. Docker en Windows y macOS
Docker Desktop crea internamente una VM ligera con kernel Linux, debido que Docker se basa en características del kernel Linux. Aquí algunas diferencias:
En Linux: Docker se ejecuta directamente sobre el kernel del sistema operativo, aprovechando las características nativas del kernel Linux para la ejecución de contenedores.
En Windows/macOS: Docker requiere de una máquina virtual que emule un entorno Linux, permitiendo agregar una capa adicional de virtualización y, aunque Docker Desktop se encarga de todo esto automáticamente, no se obtiene el mismo rendimiento que en Linux debido a la sobrecarga de virtualización.
7. Virtual Environments vs Máquinas Virtuales vs Docker
Característica | Virtual Env (Python) | Máquina Virtual | Docker |
Aislamiento de Python | ✅ | ✅ | ✅ |
Aislamiento de SO | ❌ | ✅ | ⚠️ (parcial) |
Kernel propio | ❌ | ✅ | ❌ |
Consumo de recursos | Muy bajo | Muy alto | Bajo |
Velocidad de arranque | Instantáneo | Lento | Muy rápido |
Reproducibilidad | Baja | Media | Alta |
Ideal para producción | ❌ | ✅ | ✅ |
✍️🐳 Conclusión
Los virtual environments siguen siendo útiles para desarrollo local, pero Docker es la herramienta que permite portabilidad real, despliegue consistente y escalabilidad. Docker no reemplaza a Python, ni a uv, ni a venv, los complementa y los lleva a un nivel profesional.






Comentarios