Entradas Mensuales

Síguenos en:

Canal Oficial Telegram de elhacker.NET Grupo Facebook elhacker.NET Twitter elhacker.NET Canal Youtube elhacker.NET Comunidad Steam: Grupo elhacker.NET Mastodon

Entradas populares

PostHeaderIcon 10 comandos esenciales en Docker


Docker es básicamente una herramienta que ayuda a los ingenieros de datos a empaquetar, distribuir y ejecutar aplicaciones en un entorno coherente. En lugar de instalar cosas manualmente (y rezar para que funcione en todas partes), basta con empaquetar todo el proyecto (código, herramientas, dependencias) en entornos ligeros, portátiles y autosuficientes llamados contenedores




. Estos contenedores pueden ejecutar tu código en cualquier lugar, ya sea en tu portátil, en un servidor o en la nube. Por ejemplo, si tu proyecto necesita Python, Spark y un montón de librerías específicas, en lugar de instalarlas manualmente en cada máquina, puedes crear un contenedor Docker con todo preconfigurado. 


  •     Imagen Docker: Una instantánea de un entorno con todas las dependencias instaladas.
  •     Contenedor Docker: Una instancia en ejecución de una imagen Docker.
  •     Dockerfile: Un script que define cómo debe construirse una imagen Docker.
  •     Docker Hub: Un registro público donde puedes encontrar y compartir imágenes Docker.


Antes de utilizar Docker, tendrás que instalar:



    Docker Desktop: Descárgalo e instálalo desde la web oficial de Docker. Puede comprobar si está instalado correctamente ejecutando el siguiente comando:


    docker --version


     

    Visual Studio Code: Instálalo desde aquí y añade la extensión Docker para facilitar su gestión.


Estos son los comandos esenciales de Docker que todo ingeniero de datos debe conocer:


 

 docker run


 

Qué hace: Crea e inicia un contenedor a partir de una imagen.


docker run -d --name postgres -e POSTGRES_PASSWORD=secret -v pgdata:/var/lib/postgresql/data postgres:15


 

Por qué es importante: Los ingenieros de datos suelen lanzar bases de datos, motores de procesamiento o servicios API. Las banderas del comando docker run son críticas:


  •     d: Ejecuta el contenedor en segundo plano (para que tu terminal no esté bloqueada).
  •     -name: Da nombre a tu contenedor. Deja de adivinar qué ID aleatorio es tu instancia Postgres.
  •     e: Establece variables de entorno (como contraseñas o configuraciones).
  •     p: Mapea puertos (por ejemplo, exponiendo el puerto 5432 de PostgreSQL).
  •     v: Monta volúmenes para persistir los datos más allá del ciclo de vida del contenedor.


Sin volúmenes, los datos de la base de datos desaparecerían cuando el contenedor se detuviera, un desastre para los procesos de producción.


docker build


 

Qué hace: Convierte tu Dockerfile en una imagen reutilizable.


# Dockerfile

FROM python:3.9-slim

RUN pip install pandas numpy apache-airflow


 

Ejemplo Comando:

docker build -t custom_airflow:latest .


 

Por qué es importante: Los ingenieros de datos a menudo necesitan imágenes personalizadas precargadas con herramientas como Airflow, PySpark o bibliotecas de aprendizaje automático. El comando docker build garantiza que los equipos utilicen entornos idénticos, eliminando los problemas de «funciona en mi máquina».


 

docker exec


 

Qué hace: ejecuta un comando dentro de un contenedor en ejecución.


docker exec -it postgres_db psql -U postgres # Acceder al shell PostgreSQL


 

Por qué es importante: Los ingenieros de datos usan esto para inspeccionar bases de datos, ejecutar consultas ad-hoc o probar scripts sin reiniciar los contenedores. La bandera -it le permite escribir comandos de forma interactiva (sin esto, usted está atascado en modo de sólo lectura).

 docker logs

 

Qué hace: Muestra los registros de un contenedor.


docker logs --tail 100 -f airflow_scheduler # Transmite los últimos 100 registros


 

Por qué es importante: La depuración de tareas fallidas (por ejemplo, Airflow DAGs o trabajos de Spark) se basa en los registros. El indicador -f transmite los registros en tiempo real, lo que ayuda a diagnosticar problemas en tiempo de ejecución.


docker stats


 

Qué hace: Panel de control en tiempo real del uso de CPU, memoria y red de los contenedores.


docker stats postgres spark_master


 

Por qué es importante: La supervisión eficiente de los recursos es importante para mantener un rendimiento óptimo en las canalizaciones de datos. Por ejemplo, si una canalización de datos experimenta un procesamiento lento, la comprobación de las estadísticas de docker puede revelar si PostgreSQL está sobreutilizando los recursos de la CPU o si un trabajador de Spark está consumiendo demasiada memoria, lo que permite una optimización oportuna.


 

docker-compose up


 

Qué hace: Inicia aplicaciones multicontenedor usando un archivo docker-compose.yml.


# docker-compose.yml
services:
  airflow:
    image: apache/airflow:2.6.0
    ports:
      - «8080:8080»
  postgres
    image: postgres:14
    volumes:
      - pgdata:/var/lib/postgresql/data


 


docker-compose up -d


 

Por qué es importante: Las canalizaciones de datos a menudo implican servicios interconectados (por ejemplo, Airflow + PostgreSQL + Redis). Compose simplifica la definición y gestión de estas dependencias en un único archivo declarativo para que no tengas que ejecutar 10 comandos manualmente. La bandera d permite ejecutar contenedores en segundo plano (modo separado). 


docker volume


 

Qué hace: Gestiona el almacenamiento persistente de los contenedores.


docker volume create etl_data

docker run -v etl_data:/data -d mi_etl_herramienta


 

Por qué es importante: Los volúmenes conservan datos críticos (por ejemplo, archivos CSV, tablas de bases de datos) incluso si los contenedores se bloquean. También se utilizan para compartir datos entre contenedores (por ejemplo, Spark y Hadoop). 


docker pull


 

Qué hace: Descarga una imagen desde Docker Hub (u otro registro).


docker pull apache/spark:3.4.1 # Imagen pre-construida de Spark


 

Por qué es importante: Las imágenes precompiladas ahorran horas de configuración. Las imágenes oficiales para herramientas como Spark, Kafka o Jupyter se actualizan y optimizan regularmente.


docker stop / docker rm


 

Qué hace: Detiene y elimina contenedores.


docker stop airflow_worker && docker rm airflow_worker # Limpieza


 

Por qué es importante: Los ingenieros de datos prueban tuberías de forma iterativa. Detener y eliminar los contenedores antiguos evita fugas de recursos y mantiene los entornos limpios.


docker system prune


 

Qué hace: Limpia contenedores, imágenes y volúmenes no utilizados para liberar recursos.


docker system prune -a --volumes


 

Por qué es importante: Con el tiempo, los entornos Docker acumulan imágenes no utilizadas, contenedores detenidos y volúmenes colgantes (volumen Docker que ya no está asociado a ningún contenedor), lo que consume espacio en disco y ralentiza el rendimiento. Este comando recupera gigabytes tras semanas de pruebas.


  •     a: Elimina todas las imágenes no utilizadas
  •     -volumes: Elimina también los volúmenes (¡cuidado, esto puede eliminar datos!).


Dominar estos comandos de Docker permite a los ingenieros de datos desplegar canalizaciones reproducibles, agilizar la colaboración y solucionar problemas con eficacia.


Fuentes:

https://www.kdnuggets.com/10-essential-docker-commands-for-data-engineering


0 comentarios :

Publicar un comentario

Los comentarios pueden ser revisados en cualquier momento por los moderadores.

Serán publicados aquellos que cumplan las siguientes condiciones:
- Comentario acorde al contenido del post.
- Prohibido mensajes de tipo SPAM.
- Evite incluir links innecesarios en su comentario.
- Contenidos ofensivos, amenazas e insultos no serán permitidos.

Debe saber que los comentarios de los lectores no reflejan necesariamente la opinión del STAFF.