Durante el mes de diciembre he estado aprendiendo cosas nuevas para tener un poco más de CV y una de las tecnologías que he estado aprendiendo es Docker. Docker es un proyecto de Código Abierto donde colaboran desde la Linux Foundation hasta desarrolladores de todo el mundo, con el objetivo de automatizar el despliegue de aplicaciones dentro de contenedores. Tenía muchas ganas de aprender a usar Docker y he estado preparando una serie de capítulos (creo que serán 5 o 6, aún está por ver) y empiezo con esta entrada introductoria y de paso inauguro la nueva categoría: Docker.
¿Qué es Docker?
Si alguna vez has tenido problemas instalando programas en tu computadora o servidor porque las dependencias no coinciden, entonces Docker es una solución que te interesará. Docker es una plataforma que permite empaquetar, distribuir y ejecutar aplicaciones de manera rápida y sencilla, garantizando que funcionen igual en cualquier sistema operativo o entorno.
Podemos pensar en Docker como una "caja" que contiene todo lo necesario para ejecutar una aplicación: el código, las librerías y las dependencias necesarias. Esta "caja" se conoce como contenedor, y la tecnología de Docker permite que estos contenedores sean ligeros, eficientes y fáciles de mover entre diferentes máquinas.
¿Para qué sirve?
Docker se usa principalmente para facilitar el despliegue y la administración de aplicaciones. Algunas de sus funciones principales son:
- Estandarizar entornos de desarrollo y producción: Con Docker, los desarrolladores pueden trabajar en el mismo entorno que los servidores donde se desplegará la aplicación, evitando problemas de compatibilidad.
- Facilitar la distribución de software: En lugar de enviar instrucciones complejas para instalar una aplicación, se envía un contenedor Docker que ya lo tiene todo listo.
- Optimizar el uso de recursos: A diferencia de las máquinas virtuales, los contenedores Docker comparten el mismo sistema operativo, haciendo que sean mucho más ligeros y rápidos.
- Automatizar despliegues y escalabilidad: Docker permite escalar aplicaciones fácilmente agregando o eliminando contenedores según la demanda.
¿Cuáles son los usos principales de Docker?
Docker tiene una gran variedad de usos en el mundo de la tecnología. A continuación, se presentan algunos de los más comunes:
1. Desarrollo de software
Docker permite a los desarrolladores crear un entorno de desarrollo uniforme, evitando el clásico "en mi máquina funciona, pero en el servidor no". Con Docker, todos los desarrolladores pueden usar la misma configuración, sin importar en qué sistema operativo trabajen.
2. Despliegue de aplicaciones
En producción, Docker permite desplegar aplicaciones en servidores con facilidad. Se puede crear una imagen Docker con la aplicación y todas sus dependencias, asegurando que funcionará sin problemas en cualquier servidor compatible con Docker.
3. Microservicios
Muchas aplicaciones modernas están diseñadas como un conjunto de pequeños servicios independientes (microservicios). Docker facilita la gestión y escalabilidad de estos servicios, permitiendo que cada uno corra en su propio contenedor.
4. Testing y CI/CD (Integración y Despliegue Continuo)
Docker permite ejecutar pruebas automáticas en entornos controlados y estandarizados, facilitando los procesos de integración y despliegue continuo (CI/CD). Esto reduce errores y mejora la calidad del software.
5. Contenedorización de bases de datos
Docker también se usa para ejecutar bases de datos en contenedores, permitiendo probar diferentes configuraciones sin afectar la instalación principal del sistema.
6. Aprendizaje y experimentación
Para aquellos que quieren probar nuevas tecnologías sin afectar su sistema, Docker permite levantar contenedores con diferentes aplicaciones y entornos en cuestión de minutos.
Docker VS Máquinas Virtuales
La principal diferencia es que una máquina virtual necesita contener todo el sistema operativo mientras que un contenedor Docker aprovecha el sistema operativo sobre el cual se ejecuta, por lo tanto, comparte el núcleo del sistema operativo anfitrión e incluso las librerías.

Por otra parte, respecto al almacenamiento en disco, una máquina virtual puede ocupar varios gigas ya que tiene que contener un sistema operativo, sin embargo, los contenedores Docker sólo contienen aquello que les diferencia del sistema operativo en las que se ejecutan, por ejemplo un Debian con Apache sólo ocuparía unos 190 Mb.
Desde el punto de vista del consumo del procesador y de la memoria RAM, los contenedores hacen un uso eficiente del sistema anfitrión, ya que comparten recursos con él (núcleo del sistema y parte de las bibliotecas). Así que los contenedores usan únicamente la memoria RAM y la capacidad de cómputo que estrictamente necesiten.
Conclusión
Docker es una herramienta poderosa que ha revolucionado la forma en que se desarrollan, distribuyen y despliegan aplicaciones. Su capacidad para estandarizar entornos, optimizar recursos y facilitar la escalabilidad lo convierte en una solución ideal para desarrolladores y administradores de sistemas.
A medida que avancemos en este curso, exploraremos más sobre cómo instalar, configurar y utilizar Docker para llevar nuestras aplicaciones al siguiente nivel.
Comentarios