$ docker run 2021

Cuando estaba en la universidad, en mi primera clase de Base de Datos Distribuida, conocí Docker. Al principio fue algo extraño, algo que no me pasaba por la mente que pudiera existir, el amor al desarrollo a primera vista.

Problemas que surgen al desarrollar

Cuando pensaba en aprender, experimentar o construir software, lo hacía sobre mi máquina. En la cual debía instalar todo lo que necesitaba para empezar a desarrollar y me tenía que pelear con las versiones, dependencias, entre otras que toman tiempo.

Luego me enfrenté al reto de compartir eso que había creado con amigos, algún equipo o profesor(a). Sin mencionar que debían instalar todo también y con las mismas especificaciones.

La mejor opción era que desde un inicio lo hicieras en una máquina virtual y pudieras compartirla con todo configurado. Para finalmente enfrentarse al hecho del tamaño que ocupaba. Espero que para este momento no tuviera que simular un cluster.

En la batalla final te encuentras tú, la aplicación y la(s) máquina(s) virtual(es), contra los recursos del computador donde se ejecuta al final. Y aun superando los problemas que ya tuvimos, nos desafiamos de nuevo a las dependencias, al S.O. y recursos del hardware.

Docker como solución

Ese día en la clase, descubrí la herramienta que permite Construir, Distribuir y Ejecutar tu código en donde sea, de una manera fácil y de código abierto.

Esto quiere decir que con Docker, al momento de construir, puedes especificar el S.O. donde ejecutará, las dependencias y versiones de las aplicaciones que ocupará. Asegurando que siempre ejecutará en el ambiente que requiere.

Qué al momento de distribuir lo que construiste, con quien lo necesite, podrá hacerlo rápido, simple y sin preocuparse de pre-instalar, porque ya todo estará definido desde el momento en que empezaste a construir.

Cuando especificaste el ambiente que requieres, lo puedes replicar en desarrollo, producción, o en la computadora que quieras sin esfuerzo extra. Garantizando que mientras tengas Docker, ejecutará de la manera correcta.

«Docker fue creado en el 2013, pero si aún no lo conoces, el 2021 será el año en que empieces a utilizarlo. Hoy en día StackOverflow lo tiene en segundo lugar entre las plataformas que los desarrolladores más aman y en primer lugar como la que más quieren.»

¿Qué es Docker? y ¿Cómo funciona?

Contenedores

Analicemos un poco más a fondo de qué es Docker y cómo funciona. Si ya has tenido un encuentro de primer tipo con esta herramienta, habrás leído o escuchado sobre los contenedores.

Comenzando con el hecho de que los contenedores no son algo único de Docker. Existiendo los contenedores de Linux, que permiten empaquetar y aislar las aplicaciones para poder ejecutarse en diferentes entornos. Docker fue desarrollado a partir de LXN, pero se ha desviado con el tiempo.

Imágenes

Y Docker lo lleva al siguiente nivel, facilitando la creación y diseño de contenedores, con ayuda de imágenes.

Las imágenes se pueden ver como plantillas que contienen un conjunto de instrucciones en orden, que sirven para crear un contenedor y como lo debe hacer.

Docker Hub

Hoy en día Docker Hub es la biblioteca y comunidad más grande del mundo para imágenes de contenedores, en ella podrás encontrar imágenes, obtenerlas, compartir las que tu crees y administrarlas. Solo necesitas crear una cuenta, no dudes en ir a explorar al terminar de leer.

Ejemplo

Ahora imagina que estás desarrollando una aplicación web, necesitas un servicio de HTTP Apache en su versión 2.5 y un servicio de MongoDB en su versión más actual.

Podrías levantar un contenedor por cada servicio o aplicación con ayuda de imágenes predefinidas que obtuviste de Docker Hub y se pueden comunicar entre ellos con ayuda de las redes de Docker.

Utilizar MongoDB, pero que la información de su base de datos se almacene desde un servicio en la nube del proveedor que prefieras. Esto se podrá replicar en el ambiente de desarrollo y de producción de la misma manera, fácil y rápido.

Contenedores vs. Máquinas Virtuales

Una de las diferencias es que los contenedores virtualizan el sistema operativo en lugar del hardware.

Si analizamos otros aspectos, así como múltiples máquinas virtuales se pueden ejecutar en una sola, los contenedores pueden hacer lo mismo, pero los contenedores tardan menos en arrancar.

Y mientras cada máquina virtual incluye una copia completa de un sistema operativo, aplicaciones, etc. Los contenedores pueden compartir el mismo Kernel del S.O. lo cual los puede hacer más livianos. Las imágenes de los contenedores suelen tener un tamaño de decenas de MB y las máquinas virtuales pueden llegar a ocupar decenas de GB.

Existen más aspectos que te invito a buscar porque esto no quiere decir que dejemos de usar máquinas virtuales o que Docker sea mejor, solo que tenemos otra opción.

Se ha vuelto más complejo y flexible poder tener contenedores ejecutándose dentro de máquinas virtuales.

Descargar e instalar Docker

Puedes descargar e instalar Docker en múltiples plataformas (MAC, Windows y Linux) y se puede consultar el manual desde el sitio web oficial.

También existen diferentes proveedores de servicios en la nube que te permiten utilizarlo.

Play with Docker

También tienes la alternativa de probar Docker sin una instalación con Play with Docker. Como su nombre lo dice, podrás jugar con Docker, descargando imágenes o repositorios para correr contenedores en instancias de Play with Docker. Todo al alcance de tu mano con una cuenta de Docker Hub.

2021

Ahora conoces más sobre los problemas que existen al desarrollar, que es Docker y que funciona como solución, un poco sobre su sistema de contenedores e imágenes que puedes crear u obtener de Docker Hub. Sabes algunas diferencias entre las Máquinas Virtuales y Docker. Que docker es multiplataforma y que puedes experimentar con él sin instalarlo en tu computadora con Play with Docker.

Hoy en día cada vez más ofertas de trabajo solicitan Docker, incluso como un valor agregado a los requisitos necesarios para cubrir un puesto. Recuerda que, si estás en el mundo del desarrollo de software, si quieres construir, distribuir y ejecutar código donde sea, de una forma fácil, solucionar tus problemas, experimentar en nuevas tecnologías, aprender y comprender la idea del título en este artículo… Tú, debes aprender Docker.

¿Quieres saber más de lo que ofrecemos y ver otros casos de éxito?