Docker
Cuando se trabaja en un proyecto, no es difícil terminar con un ambiente lleno de librerías y dependencias de versiones específicas sin darse cuenta. Al intentar pasar de un equipo a otro para seguir trabajando en otra máquina o para que un compañero del equipo tenga acceso a los avances, puede ocurrir un error de versiones diferentes de paquetes, o quizá se tenga que dedicar una cantidad de horas en la instalación de todas las dependencias en lugar de estar avanzando al proyecto. Aunque Anaconda ayuda con las librerías de Python, a veces los problemas surgen de la diferencia de sistemas operativos, y en ese caso la respuesta al problema es Docker.
Primero, ¿qué es Docker? Se trata de una herramienta para crear contenedores que recrean el ambiente de aplicaciones, incluyendo todas las dependencias. Docker usa tres términos importantes en su funcionamiento: contenedores, imágenes y Dockerfile. Un contenedor es la instancia de la aplicación, el ambiente resultante en el que se ejecuta la aplicación; mientras que una “imagen” es el molde o plano con el que se crean los contenedores. Todos los contenedores creados de la misma imagen son exactamente iguales. Por último, se tiene el Dockerfile; es un archivo de texto indicando cómo construir la imagen o molde. [1]
Dicho todo lo anterior, ¿cuáles son las diferencias entre un contenedor y una máquina virtual? A primera impresión podría parecer que Docker crea una máquina virtual para simular el ambiente sin importar dónde se esté corriendo el contenedor, pero en realidad hay diferencias entre máquinas virtuales y contenedores. Los contenedores virtualizan el sistema operativo en lugar del hardware, entonces son más ligeros y eficientes. Los contenedores abstraen la capa de aplicación que contiene el código y las dependencias; varios contenedores pueden correr en la misma máquina, cada uno como un proceso aislado. [2]
Algunos beneficios de usar Docker en Data Science son: [3]
· Reproducibilidad: No hay de qué preocuparse con Docker, la aplicación va a funcionar exactamente igual que en el contenedor en el que se probó.
· Agilidad: Debido a la eficiencia y beneficios de desempeño, mejoran la integración continua y procesos de entrega.
· Portabilidad: Cambiar de equipo de trabajo o implementar en servidores es más sencillo con Docker.
Docker es una herramienta útil para cualquier tipo de proyecto, incluyendo aquellos del área de Data Science. Se recomienda visitar el sitio oficial de Docker (aquí) para más información.
Lic. Luis Roberto Bustos Vargas
Fuentes
[1] Pleban, D. (18 de Octubre de 2020). Docker for Data Science — A Step by Step Guide. Obtenido de towards data science: https://towardsdatascience.com/docker-for-data-science-a-step-by-step-guide-1e5f7f3baf8e
[2] Opeyemi, B. (19 de Julio de 2021). Data Science & Machine Learning in Containers. Obtenido de neptune blog: https://neptune.ai/blog/data-science-machine-learning-in-containers
[3] Komolafe, A. (s.f.). Docker for data science. Obtenido de Medium: https://medium.com/analytics-vidhya/docker-for-data-science-442299c5203c