que-es-docker

¿Qué es Docker? Introducción a la tecnología de contenedores

  • 4 min

Inauguramos un curso sobre Docker y contenedores, una tecnología que ha pasado de ser una “moda” a convertirse en un estándar del desarrollo de software.

A lo largo de esta serie veremos qué son, cómo funcionan, y por supuesto veremos un montón de comandos comandos y ejemplos prácticos.

Pero antes de ponernos a teclear como locos, la pregunta del millon al hablar de contenedores. La pregunta que todos nos hicimos en algún momento ¿para que narices sirve Docker? 👇

docker-course

“Docker” es el nombre comercial que se ha impuesto popularmente para referirse a la tecnología de contenedores.

En este curso vamos a hablar de contenedores en general, incluidas alternativas como Podman o containerd.

El problema de tener todo junto

Para entender Docker, primero hay que recordar el dolor de cabeza que teníamos antes de que existiera (y que, si no usas Docker, probablemente sigas teniendo).

Imagina que quieres probar una nueva tecnología. Digamos, una aplicación web self-hosted, o un broker MQTT para tus proyectos de IoT. Para hacerla funcionar no basta con descargar el código.

Tienes que montar un tinglado de dependencias:

  • Instalar un servidor web específico.
  • Instalar Node.js (rezar para que sea la versión correcta).
  • Configurar una base de datos MariaDB.
  • Crear usuarios, permisos, variables de entorno…
  • … y retocar cinco archivos de configuración mientras haces vudú para que no falle nada.

que-es-docker

¿Te suena? Pues tranquilo que ahora empeora…

A medida que instalas más cosas en tu ordenador, las librerías empiezan a pelearse entre sí. La versión de la base de datos que necesita tu Proyecto A es incompatible con la del Proyecto B. Actualizas una librería global y, de repente, nada funciona.

Y para rematar: cuando quieres desinstalar algo. Tienes que jugar a la ruleta rusa borrando archivos, con el miedo constante de dejar “basura” residual (mucho peor) cargarte algo de otro proyecto.

Docker al rescate

Aquí es donde entra Docker para salvarnos la vida. Su filosofía ataca directamente ese problema:

Docker soluciona el caos empaquetando el software.

En lugar de instalar las cosas “sueltas” y desordenadas en tu sistema operativo, Docker utiliza contenedores.

Un contenedor es un paquete cerrado que incluye “todo lo que necesita” una aplicación para funcionar (código, librerías, configuración, dependencias…)

Piénsalo como si fuera una “caja” estanca o un tupper. Lo que pasa dentro del contenedor, se queda en el contenedor. No ensucia tu sistema operativo principal ni se pelea con otras aplicaciones.

¿Por qué deberías usarlo?

La principal ventaja consiste en la portabilidad. Si una aplicación funciona en mi ordenador dentro de un contenedor Docker, funcionará exactamente igual en tu servidor, en tu Raspberry Pi o en la nube.

Pero además, Docker nos aporta:

Limpieza

Puedes levantar una base de datos compleja en segundos, usarla, y borrarla sin dejar ni rastro en tu sistema.

Rapidez

A diferencia de una Máquina Virtual (que tarda minutos en arrancar), un contenedor arranca en milisegundos.

Comunidad

En Docker Hub tienes miles de imágenes listas para usar. ¿Quieres WordPress? docker run. ¿Un servidor Minecraft? docker run. Sin instalaciones complejas.

¿Qué es exactamente Docker?

Docker no inventó los contenedores (Linux ya tenía LXC mucho antes). Lo que hizo Docker fue crear una herramienta amigable y estandarizada para usarlos.

Docker es una plataforma abierta para desarrollar, enviar y ejecutar aplicaciones. Nos permite separar nuestras aplicaciones de nuestra infraestructura.

Cuando hablamos de “Docker”, generalmente nos referimos a:

  1. Docker Engine: El programa que se ejecuta en tu ordenador y hace el trabajo sucio.
  2. Docker Images (Imágenes): Son las “plantillas” o moldes de nuestras aplicaciones. Son de solo lectura.
  3. Docker Containers (Contenedores): Son las instancias vivas de esas imágenes. Es lo que ejecutamos.

¿Es Docker gratis?

Esta es una pregunta que no siempre nos hacemos y deberíamos, porque las licencias de de Docker han cambiado con los años. Vamos a aclararlo. Docker tiene dos ediciones principales

  1. Docker Community Edition (CE): Gratuita y Open Source. Es la que usaremos en el curso y la que se instala en servidores Linux.
  2. Docker Desktop: Es la aplicación con interfaz gráfica para Windows y Mac. Es gratuita para uso personal, educación y pequeñas empresas.

Si trabajas en una empresa con más de 250 empleados o grandes ingresos Docker Desktop requiere una suscripción de pago.

Aunque el motor de Docker en sí (la tecnología) sigue siendo libre.