TeraStat2 permette sfruttare i container per l'esecuzione dei propri esperimenti.

I container in questo contesto permettono principalmente di:

  • semplificare l'utilizzo dei software non istallato sulla piattaforma
  • aumentare la riproducibilità dei propri esperimenti

La tecnologia scelta per i container su TS2 è singularity; singularity permette sia di utilizzare container nativi, sia di convertirne di creati in ambienti più diffusi come ad esempio docker sia di crearne di propri con file di definizione analoghi a quelli di docker.

I container in singularity sono singoli file immagine: è possibile quindi caricarli sul cluster come qualunque altro file, ma è anche possibile scaricarli direttamente da repository pubblici. La creazione di container nuovi deve invece avvenire sulla propria postazione di lavoro.

Segnaliamo questo sito che contiene un buon tutorial sull'utilizzo di singularity.

Esempio

Il primo step per utilizzar ei container su TS2 è scaricare l'immagine che si vuole utilizzare.

Se la si è creata sulla propria workstation è possibile caricarla su TS2 come qualsiasi altro file.

Se si vuole utilizzare un'immagine di un repository accessibile su internet è possibile scaricarla con

singularity pull library://ubuntu:16.04
o
singularity pull docker://ubuntu:16.04

Il primo comando scarica l'immagine dal repository delle immagini di singularity (sylabs.io). Il secondo comando scarica un'immagine omonima di un container docker dal repository docker e la converte automaticamente in un container singularity. Chiaramente nulla garantisce che nei due repository siano disponibili le stesse immagini. Sono inoltre disponibili diversi altri repositor. Questo comando deve essere eseguito sul nodo di login perché i nodi di calcolo non hanno accesso ai repository. Il container può poi essere usato per eseguire un comando al suo interno

singularity exec ubuntu_16.04.sif cat /etc/debian_version

Questo comando può poi essere anche inserito all'interno di uno script di schedulazione in modo che venga eseguito sui nodi di calcolo.