Docker para la Ciencia de Datos

Julio César Ruiz Tejada
5 min readNov 12, 2023

--

Data Science with Docker

Antes de comenzar, vamos de definir que es Docker y para qué sirve. Docker es una herramienta de software que permite crear, implementar y administrar aplicaciones en contenedores. ¿Contenedor?, si, un contenedor, lo podemos definir como una unidad de software que contiene todo lo necesario para ejecutar una aplicación, incluidos los archivos, los binarios, las bibliotecas y los entornos de ejecución, es así como podemos “Dockerizar” aplicaciones de Python, Angular, React, dodnet o inclusive bases de datos y por supuesto aplicaciones enfocadas a la Ciencia de Datos.

Terminologías básicas

Docker Compose

Es una herramienta que permite definir y administrar grupos de contenedores relacionados entre si. Es un archivo de texto de composición de Docker que define los contenedores que se van a crear, sus dependencias, volúmenes, registros y redes que usaran.

Dockerfile

Es un simple archivo de texto que define cómo crear una imagen de contenedor, consta de una serie de instrucciones que se ejecutan de forma secuencial, por ejemplo, como los archivos .sh de linux.

Docker Hub

Registro público para cargar imágenes y trabajar con ellas. En este gran repositorio de imágenes es donde podremos encontrar imágenes de aplicaciones, de software y de sistemas que usaremos para crear nuestros contenedores. Puedes crear una cuenta y subir tus propias imágenes y tenerlas públicas o privadas.

Docker Engine

Es el componente central de Docker que permite crear, implementar y administrar todos los contenedores.

Docker Daemon

Proceso que se ejecuta en segundo plano y controla los contenedores. En Linux se llama docker.service.

API de Docker

La API de Docker es una interfaz de programación de aplicaciones que se puede utilizar para controlar los contenedores de forma automatizada, gusta mucho porque con ella podemos crear y desplegar nuestros sistemas un poco más fácil desde el punto de vista del programador siempre y cuando el proyecto requiera mantenimientos futuros.

Ahora que sabemos que es y para que sirve, pasemos al tema principal, como puedo instalarlo y sobre todo como usarlo para la ciencias de datos.

Cómo instalar Docker

Podemos seguir los pasos que nos dan en su propia web:

👉https://www.docker.com/get-started/

Para este ejemplo, explicaré como instalar Docker en Linux Debian:

Actualicemos nuestro sistema operativo:

sudo apt update

Vamos a realizar unas configuraciones necesarias e instalar los paquetes necesarios, Ejecutemos los siguientes códigos línea por línea:

sudo apt install apt-transport-https lsb-release ca-certificates curl gnupg -y

curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt update

sudo apt -y install docker-ce docker-ce-cli containerd.io

Iniciamos el servicio Docker:

sudo systemctl start docker

y luego habilitaremos el servicio para que se inicie automáticamente al arrancar nuestro Linux:

sudo systemctl enable docker

y ahora, ¿Cómo se une Docker con la ciencia de datos?

Docker se puede utilizar para ciencia de datos de varias maneras. Una forma es utilizar Docker para crear entornos de desarrollo reproducibles. Esto permite a los científicos e ingenieros de datos compartir sus proyectos o ejecutarlos en cualquier entorno.

Otra forma es utilizar Docker para crear aplicaciones de ciencia de datos que se puedan implementar en producción. Esto permite crear aplicaciones que se puedan ejecutar en cualquier entorno, sin tener que preocuparse por las dependencias o la configuración, luego los científicos de datos pueden usar esas mismas aplicaciones para entornos de aprendizajes automatizados para luego los analistas de datos puedan entregar visualizaciones de gráficos para la toma de decisiones.

Casos de usos

Caso de uso 1: Desarrollo de modelos de aprendizaje automático

Imagen creada con IA a travéz de Bing Creator Image

Un científico de datos podría crear un Dockerfile que defina un entorno que incluya Python, TensorFlow y todas las dependencias necesarias para desarrollar un modelo de aprendizaje automático. Este Dockerfile podría compartirse con otros científicos de datos para que puedan comenzar a desarrollar sus propios modelos de aprendizaje automático sin tener que instalar Python, TensorFlow o ninguna de las dependencias anteriores.

Caso de uso 2: Implementación de aplicaciones de aprendizaje automático

Imagen creada con IA a travéz de Bing Creator Image

Creamos un Dockerfile nuevamente, este documento de texto va a definir lo necesario para crear una aplicación de aprendizaje automático que se utilice para clasificar imágenes. Este Dockerfile podría implementarse en un servidor para que la aplicación esté disponible para todos los usuarios. Luego de su uso podemos ejecutarlo en distintos entornos y trabajar su automatización, por ejemplo, usar Camunda como orquestador de procesos de nuestra app.

Caso de uso 3: Analítica de datos en tiempo real

Imagen creada con IA a travéz de Bing Creator Image

Crear varios contenedores, el primero con un código ETL en Python que extraiga data de un sitio web las 24 horas del día cada minuto, luego tener otro contenedor con Apache Kafka que sirva como canalización de datos y nuestro tercer contenedor con Apache Druid la cual es una Base de Datos NoSQL, donde almacenaremos dicha información. Para poder conectar esa base de datos y crear gráficos podríamos usar Apache Superset, el cual es un potente creador de gráficas para tomas de decisiones y que tiene el poder de conectar varias bases de datos. Ya explique un poco en un post anterior de como usarlo justamente para esto, lo puedes ver aquí:

Analítica de datos en tiempo real: Kafka, Druid y Superset

👉 https://medium.com/@jcrtejada05/anal%C3%ADtica-de-datos-en-tiempo-real-kafka-druid-y-superset-a55f79f61611

Opiniones Finales

Como ya vimos en este blog, Docker lo podemos usar para muchas cosas relacionadas a la ciencia de los datos, con el poder que tienen podríamos crear y administrar proyectos de gran escala y sobre todo con enfoque de aprendizaje automatizado, sistemas en tiempo real y escalabilidad de aplicaciones.

En frente de nosotros tenemos todo lo necesario para ser creadores de sistemas y/o aplicaciones que pueden marcar una época en el desarrollo de la ciencia de los datos y junto con Docker tenemos las herramientas necesarias para marca un antes y un después. Con esto espero haberte ayudado en entender un poco más sobre este grandioso mundo de la Ciencia de Datos y como otros sistemas pueden ser grandes aliados para tus futuros proyectos.

--

--

Julio César Ruiz Tejada

Engineer, developer & designer | Technology & life enthusiast 🤓💻