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
osingularity 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.