Por Lita García
Si esta herramienta ha aparecido en tu camino cómo desarrollador/a, este artículo puede ayudarte a conocer que es Docker en términos generales. Docker es una plataforma que facilita la creación, despliegue y ejecución de aplicaciones dentro de contenedores, asegurando que funcionen de manera consistente en cualquier entorno.
El primer paso es tener un poco de contexto sobre lo que hace Docker, aunque para ello, la primera herramienta que necesitaremos poner de nuestra parte, será nuestra imaginación y aplicar con ello una analogía.
Imagina que te gustaría hacer la mejor receta de pizza italiana que encontraste en Internet. Para ello empezamos a recolectar los ingredientes básicos: harina, agua, tomate… etc. Una tarea sencilla, los apuntamos en una lista.
Una vez tenemos la lista, debemos tener las herramientas principales: los materiales para amasar, hornear y el tiempo para elaborar la pizza.
A priori, parece una tarea sencilla ¿verdad?. Pero si queremos ser fieles a la receta, nuestros materiales deben ir más allá, lo cual empieza a dificultarse y necesitaremos:
En definitiva, dependemos de muchas cosas que a veces se escapan de nuestras posibilidades y esa pizza se hace complicada de recrear al más puro estilo italiano.
Aquí es donde entra Docker, y para entenderlo, imagina lo siguiente: ¿y si pudieras tener una pizzería mágica y portátil en la que metes todos los ingredientes, y siempre que la abras, obtienes la pizza perfecta?.
En lugar de preocuparte por si tienes todos los ingredientes exactos o si el horno es el adecuado, Docker se encarga de recolectar y ejecutar todo lo que tu aplicación necesita.
Para que esta pizzería funcione, necesitamos ciertas cosas previas para que pueda crearnos la pizza definitiva. En las siguientes secciones, encontrarás el nombre técnico seguido de una analogía referida a nuestro ejemplo.
Antes de que podamos disfrutar de nuestra pizza, primero debemos prepararla. Imagina que ya hemos reunido todos los ingredientes y hemos montado la pizza, pero aún no la hemos horneado. Esta pizza aún cruda es lo que en Docker llamamos una Imagen. Contiene todo lo que tu aplicación necesita: el código, las dependencias, las configuraciones… y está lista para ser ejecutada.
Para poder crear esa pizza cruda (la Imagen), necesitamos un recetario que nos guíe paso a paso.
Este fichero, es llamado Dockerfile, y en él encontramos diferentes comandos que ejecutan sentencias.
Para comenzar a entender cómo funciona Docker, vamos a crear un ejemplo simple de un Dockerfile que monta una pequeña aplicación web usando Node.js. Imaginemos que queremos construir una aplicación que muestra “¡Hola, mundo!” en nuestro navegador.
# Necesitamos una versión de node
FROM node:20
# Establecemos el directorio de trabajo
WORKDIR /app
# Copiamos el archivo package.json al contenedor
COPY package.json .
# Instalamos las dependencias necesarias
RUN npm install
# Copiamos el resto de los archivos de la aplicación
COPY . .
# Exponemos el puerto en el que nuestra aplicación correrá
EXPOSE 3000
# Iniciamos la aplicación
CMD ["npm", "start"]
Ya tenemos nuestra pizza montada, pero aún no está lista para disfrutarla. Necesitamos un lugar donde cocinarla y obtener ese delicioso resultado final. En el mundo de Docker, ese lugar es el contenedor. Es decir, el horno mágico dónde la pizza se horneará.
En términos de desarrollo, el contenedor es donde se ejecuta tu aplicación. Una vez que Docker ha montado la pizza (es decir, la imagen), el contenedor se encarga de cocinarla en cualquier entorno, asegurando que el resultado sea siempre el mismo, ya sea en tu máquina local, en el servidor de un amigo, o en un entorno de producción.
El contenedor, al igual que un horno, es un espacio aislado que garantiza que tu aplicación funcione sin interferencias externas, asegurando que todos los ingredientes (dependencias, configuraciones, código) estén en su lugar y listos para crear el producto final: una aplicación completamente funcional.
Volvamos a la pizza. Imagina que tienes que preparar pizzas en diferentes lugares: en tu cocina, en la casa de un amigo, y en una pizzería. Si dependes del horno de cada lugar, el resultado puede ser diferente en cada uno. Pero si llevas tu pizzería portátil (Docker), siempre obtendrás la misma pizza, con el mismo sabor y la misma calidad. En definitiva, la verdadera pizza italiana. Además, te ahorrarás tener guardado en tu casa un horno de piedra enorme o malgastar tiempos de espera.
Técnicamente hablamos de que podemos crear una Imagen con Ubuntu, por ejemplo, independientemente de que trabajemos en otro sistema operativo. Nos ahorramos tiempo y espacio.
¿Quieres más? te invitamos a suscribirte a nuestro boletín para avisarte cada vez que recopilemos contenido de calidad que compartir.
Si disfrutas leyendo nuestro blog, ¿imaginas lo divertido que sería trabajar con nosotros? ¿te gustaría?
Pero espera 🖐 que tenemos un conflicto interno. A nosotros las newsletter nos parecen 💩👎👹 Por eso hemos creado la LEAN LISTA, la primera lista zen, disfrutona y que suena a rock y reggaeton del sector de la programación. Todos hemos recibido newsletters por encima de nuestras posibilidades 😅 por eso este es el compromiso de la Lean Lista