Fuente: https://twitter.com/docker/status/908535358773702656

Principios de Docker para Ciencias de Datos

Docker: una herramienta de la muchos hablan en LinkedIn, pero no todos comprenden en la vida real. Todos hemos estado ahí, viendo el titular de un artículo más sobre Docker y pensando “algún día debería ponerme a entender qué es eso, a lo mejor me podría servir para el futuro”. Bueno, ¡hoy es el día! Este artículo es una breve y leve introducción a esta herramienta de gran capacidad.

Paola Ortega Saborío
4 min readJul 8, 2021

--

Aviso: Este artículo está enfocado hacia personas (sobre todo gente en el ámbito de ciencias de datos) con poco o nulo conocimiento sobre Docker. Como buen artículo introductorio, voy a estar omitiendo detalles que para otras personas con más conocimiento podrían parecer fundamentales. Sin embargo, el propósito del artículo es brindar la cantidad necesaria de información para que todos podamos entender las bases.

¿Qué es?

Fuente: https://www.techrepublic.com/article/docker-the-smart-persons-guide/

Docker es una plataforma de software utilizada para aislar un ambiente de desarrollo y sus configuraciones dentro de una aplicación. Es decir, imaginemos que dentro de mi computadora Mac tengo en mi línea de comandos Docker, y que éste a la vez está corriendo Ubuntu. Este concepto de aislar software en paquetes se conoce también como virtualización, pero para efectos de terminología Docker se le conoce como un contenedor.

¿Para qué sirve?

Posiblemente se pregunten a este punto para qué le serviría a uno un contenedor, si mucho del software que se puede correr en un contenedor también se podría correr fuera del contenedor. Digamos que ustedes hacen un cuaderno de Jupyter, y ahí tienen un proyecto de clase en Python utilizando Tensorflow y librerías de visualización. Si su profesor quisiera correr el código en su propia computadora, posiblemente necesitaría verificar qué librerías está utilizando el proyecto, qué versión de Python tiene y, dependiendo del modelo y sistema operativo de la computadora, tal vez tendría dificultades para correr el código al final.

Ahí es cuando Docker se vuelve muy útil. Si se creara un ambiente utilizando Ubuntu como imagen, y se le agrega Python, Tensorflow y todas las dependencias, uno necesitaría solamente compartir estas configuraciones, para que el profesor simplemente abra Docker, corra las configuraciones y cree el ambiente sin él tener que hacer nada más. De hecho, podrían pasar 5 a 10 años, muchísimas versiones de Python y Tensorflow, que si las configuraciones se dejan como están el profesor podría correr ese contenedor sin problemas, ya que las versiones dentro del contenedor son compatibles entre sí.

¿Cómo funciona?

Fuente: https://medium.com/platformer-blog/practical-guide-on-writing-a-dockerfile-for-your-application-89376f88b3b5

Hablemos de las imágenes y contenedores de Docker. En términos técnicos, una imagen es un archivo que contiene código ejecutable. Al ejecutar esta imagen en Docker, se crea un contenedor. Desde una perspectiva más amplia, una imagen puede servir como un punto de partida. Es decir, una imagen puede ser un sistema operativo, un ambiente de desarrollo, otra imagen previamente creada, etc. En Docker Hub, existen imágenes de acceso público que ustedes mismos pueden usar en sus proyectos.

Una vez que se corre la imagen y se tiene un contenedor, uno puede hacer todas las operaciones y configuraciones deseadas dentro del ambiente que está corriendo. Sin embargo, si uno apaga el contenedor y lo vuelve a correr, todas estas configuraciones se perderían. Esto se debe a que Docker utiliza solamente las configuraciones de afuera como base. Existen archivos llamados Dockerfile, que permiten especificar la imagen base, y extender a todas las configuraciones e instalaciones necesarias para correr un proyecto, sin tener que agregarlas en tiempo de ejecución.

Entonces, para recapitular: con un archivo Dockerfile, uno puede crear una imagen personalizada, y al correrla se crea un contenedor, que a su vez se corre y hace disponible el ambiente ideal para nuestros proyectos.

¿Qué sigue?

Si quieren pasar a código y crear sus propios experimentos en Docker, les recomiendo seguir paso a paso el tutorial oficial de Docker. Está en inglés, pero es un tutorial que explica el por qué de cada parámetro en cada línea de código. Pueden utilizar también este tutorial (en inglés también) para crear un ambiente con bastantes herramientas que se utilizan todos los días en las ciencias de datos.

¿Qué les pareció esta explicación de Docker? ¿Les gustaría un tutorial de Docker para Ciencias de Datos en español? ¡Haganmelo saber en los comentarios!

--

--