Creazione di un’immagine Docker semplice per la scienza dei dati

Immagine Docker per la scienza dei dati

Perché Docker per la Data Science?

Come data scientist, avere un ambiente standardizzato e portabile per l’analisi e la modellazione è fondamentale. Docker offre un ottimo modo per creare ambienti di data science riutilizzabili e condivisibili. In questo articolo, vedremo i passaggi per configurare un ambiente di data science di base utilizzando Docker.

Perché dovremmo considerare l’uso di Docker? Docker consente ai data scientist di creare ambienti isolati e riproducibili per il proprio lavoro. Alcuni dei vantaggi chiave dell’utilizzo di Docker includono:

  • Consistenza – Lo stesso ambiente può essere replicato su diverse macchine. Non ci sono più problemi del tipo “funziona sul mio computer”.
  • Portabilità – Gli ambienti Docker possono essere facilmente condivisi e distribuiti su piattaforme multiple.
  • Isolamento – I container isolano le dipendenze e le librerie necessarie per diversi progetti. Non ci sono più conflitti!
  • Scalabilità – È facile scalare un’applicazione creata all’interno di Docker avviando più container.
  • Collaborazione – Docker consente la collaborazione consentendo ai team di condividere ambienti di sviluppo.

Passaggio 1: Creazione di un Dockerfile

Il punto di partenza per qualsiasi ambiente Docker è il Dockerfile. Questo file di testo contiene le istruzioni per la creazione dell’immagine Docker.

Creiamo un Dockerfile di base per un ambiente di data science Python e salviamolo come ‘Dockerfile’ senza estensione.

# Utilizza l'immagine Python ufficiale
FROM python:3.9-slim-buster

# Imposta la variabile di ambiente
ENV PYTHONUNBUFFERED 1

# Installa le librerie Python
RUN pip install numpy pandas matplotlib scikit-learn jupyter

# Esegui Jupyter di default
CMD ["jupyter", "lab", "--ip='0.0.0.0'", "--allow-root"]

Questo Dockerfile utilizza l’immagine Python ufficiale e installa alcune popolari librerie di data science al suo interno. L’ultima riga definisce il comando predefinito per eseguire Jupyter Lab quando viene avviato un container.

Passaggio 2: Creazione dell’immagine Docker

Ora possiamo creare l’immagine utilizzando il comando docker build:

docker build -t ds-python .

Ciò creerà un’immagine denominata ds-python basata sul nostro Dockerfile.

La creazione dell’immagine potrebbe richiedere alcuni minuti poiché vengono installate tutte le dipendenze. Una volta completato, possiamo visualizzare le immagini Docker locali utilizzando docker images.

Passaggio 3: Esecuzione di un container

Con l’immagine creata, possiamo ora avviare un container:

docker run -p 8888:8888 ds-python

Questo avvierà un’istanza di Jupyter Lab e mappera la porta 8888 dell’host alla porta 8888 del container.

Ora possiamo navigare su localhost:8888 in un browser per accedere a Jupyter e iniziare ad eseguire i notebook!

Passaggio 4: Condivisione e distribuzione dell’immagine

Un vantaggio chiave di Docker è la possibilità di condividere e distribuire immagini in ambienti diversi.

Per salvare un’immagine in un archivio tar, eseguire:

docker save -o ds-python.tar ds-python

Questa archiviazione tar può quindi essere caricata su qualsiasi altro sistema con Docker installato tramite:

docker load -i ds-python.tar

Possiamo anche caricare le immagini in un registro Docker come Docker Hub per condividerle pubblicamente o privatamente all’interno di un’organizzazione.

Per caricare l’immagine su Docker Hub:

  1. Crea un account Docker Hub se non ne hai già uno
  2. Esegui l’accesso a Docker Hub dalla riga di comando utilizzando docker login
  3. Tagga l’immagine con il tuo nome utente Docker Hub: docker tag ds-python tuonomeutente/ds-python
  4. Carica l’immagine: docker push tuonomeutente/ds-python

L’immagine ds-python è ora ospitata su Docker Hub. Gli altri utenti possono scaricare l’immagine eseguendo:

docker pull yourusername/ds-python

 

Per i repository privati, è possibile creare un’organizzazione e aggiungere utenti. Ciò consente di condividere immagini Docker in modo sicuro all’interno dei team.

 

Passaggio 5: Caricamento ed Esecuzione dell’Immagine

 

Per caricare ed eseguire l’immagine Docker su un altro sistema:

  1. Copia il file ds-python.tar sul nuovo sistema
  2. Carica l’immagine utilizzando docker load -i ds-python.tar
  3. Avvia un contenitore utilizzando docker run -p 8888:8888 ds-python
  4. Accedi a Jupyter Lab su localhost:8888

È tutto! L’immagine ds-python è ora pronta per essere utilizzata sul nuovo sistema.

 

Considerazioni Finali

 

Questo ti offre una breve introduzione su come configurare un ambiente di data science riproducibile con Docker. Alcune pratiche consigliate aggiuntive da considerare:

  • Utilizza immagini di base più piccole come Python slim per ottimizzare le dimensioni dell’immagine
  • Sfrutta i volumi di Docker per la persistenza e la condivisione dei dati
  • Segui i principi di sicurezza come evitare di eseguire i contenitori come root
  • Utilizza Docker Compose per definire ed eseguire applicazioni multi-contenitore

Spero che tu trovi questa introduzione utile. Docker offre infinite possibilità per ottimizzare e scalare i flussi di lavoro di data science.

    Matthew Mayo (@mattmayo13) è un Data Scientist e l’Editore-in-Chef di VoAGI, la risorsa online di riferimento per Data Science e Machine Learning. I suoi interessi si concentrano nell’elaborazione del linguaggio naturale, nel design e nell’ottimizzazione degli algoritmi, nell’apprendimento non supervisionato, nelle reti neurali e negli approcci automatizzati all’apprendimento automatico. Matthew possiede una laurea magistrale in informatica e un diploma di specializzazione in data mining. È possibile contattarlo all’indirizzo editor1 at VoAGI[dot]com.