Utilizzo di contenitori (Docker/Podman)
Poiché i pacchetti NeuroFedora sono disponibili nei repository Fedora, possono essere utilizzati anche in container personalizzati utilizzando i container base di Fedora. La community Fedora rilascia immagini container per tutte le release di Fedora, che possono essere scaricate da registri di immagini container pubblici standard come il link: https://hub.docker.com/_/fedora [Docker Hub].
Podman è un sostituto di Docker che non richiede accesso amministrativo. Può essere utilizzato come sostituto di Docker nella maggior parte dei casi. Su un sistema Fedora, Podman può essere installato utilizzando dnf
.
sudo dnf install podman
Per utilizzare Docker, fare riferimento al link: Docker documentation. Fedora include anche il link: Toolbox, che consente l’utilizzo di ambienti a riga di comando containerizzati. Toolbox può essere installato utilizzando dnf
:
sudo dnf install toolbox
Per saperne di più clicca sul link: pagina di documentazione di Fedora Silverblue.
Utilizzo dell’immagine contenitore CompNeuro
Parallelamente al link: supporto di installazione del laboratorio CompNeuro, viene fornita anche un’immagine container che include lo stesso set di software. L’immagine del laboratorio è un’immagine completa del sistema operativo, utilizzabile sia in modalità "live" che installata su una macchina virtuale o un computer, e ci permette di utilizzare lo stesso software con tecnologie container come Podman e Docker.
L’immagine del contenitore può essere ottenuta dal link: Fedora Container Registry.
podman pull registry.fedoraproject.org/compneuro
Può quindi essere utilizzato in modo interattivo:
podman run -it compneuro:latest /bin/bash
# terminale nel contenitore
[root@95b9db71272f /]#
Utilizzo interattivo dei contenitori di rilascio di Fedora
Sebbene l’immagine del contenitore CompNeuro includa una vasta gamma di strumenti per le neuroscienze computazionali, qualsiasi pacchetto dei repository Fedora può essere utilizzato in un contenitore utilizzando i contenitori base della release Fedora. Di seguito è riportato un semplice esempio di utilizzo di un contenitore Fedora per un pacchetto NeuroFedora. In questo caso, utilizziamo l’immagine del contenitore base Fedora, installiamo il pacchetto richiesto e ne verifichiamo il funzionamento.
Per prima cosa, estraiamo l’immagine base del contenitore Fedora:
podman pull fedora:latest
Risolto il nome breve "fedora" con un alias registrato (origine: /etc/containers/registries.conf.d/shortnames.conf)
Tentativo di estrazione di registry.fedoraproject.org/fedora:latest...
Ottenimento delle firme sorgente dell'immagine
Copia del blob 8fde7942e775 [--------------------------------------] 0.0b / 0.0b
Copia della configurazione 79fd58dc76 completata
Scrittura del manifesto nella destinazione dell'immagine
Memorizzazione delle firme
79fd58dc76113dac76a120f22cadecc3b2d1794b414f90ea368cf66096700053
Quindi eseguiamo l’immagine in modo interattivo.
podman run -it fedora:latest /bin/bash
# terminale nel contenitore
[root@95b9db71272f /]#
Questo ci fornisce un contenitore con cui possiamo lavorare in modo interattivo. Possiamo installare un pacchetto qui come faremmo su un’installazione di Fedora, ad esempio:
[root@95b9db71272f /]# sudo dnf install python3-nest
Ultimo controllo di scadenza dei metadati: 0:06:14 fa, mercoledì 6 gennaio 2021 alle 10:41:28.
Dipendenze risolte.
====================================================================================
Pacchetto Arch Versione Repo Dimensione
===========================================================================================
Installazione:
python3-nest x86_64 2.20.1-5.fc33 aggiornamenti 518 k
Installazione dipendenze:
....
....
Completato!
Possiamo quindi eseguire i comandi normalmente:
[root@95b9db71272f /]# ipython
Python 3.9.0 (predefinito, 6 ott 2020, 00:00:00)
Digitare 'copyright', 'credits' o 'license' per maggiori informazioni
IPython 7.18.1 -- Un Python interattivo migliorato. Digitare '?' per assistenza.
In [1]: import nest
[INFO] [2021.1.6 11:10:43 /builddir/build/BUILD/nest-simulator-2.20.1/nest-simulator-2.20.1/nestkernel/rng_manager.cpp:217 @ Network::create_rngs_] : Creazione di RNG predefiniti
[INFO] [2021.1.6 11:10:43 /builddir/build/BUILD/nest-simulator-2.20.1/nest-simulator-2.20.1/nestkernel/rng_manager.cpp:260 @ Network::create_grng_] : Creazione di un nuovo RNG globale predefinito
06 gen 11:10:43 CopyFile [Errore]:
Impossibile aprire il file sorgente.
Errore nel file di risorse nest: /BadIO in CopyFile_
-- N E S T --
Copyright (C) 2004 The NEST Initiative
Versione: nest-2.20.1
Built: 10 agosto 2020 00:00:00
Questo programma viene fornito COSÌ COM'È e SENZA ALCUNA GARANZIA.
Consultare il file LICENZA per i dettagli.
Problemi o suggerimenti?
Visita https://www.nest-simulator.org
Digita 'nest.help()' per saperne di più su NEST.
In [2]: nest.version()
Out[2]: 'NEST nest-2.20.1'
In [3]:
Creazione di immagini del contenitore
Sebbene lavorare in modo interattivo sia piuttosto utile, è ancora più utile creare immagini contenitore con set specifici di pacchetti che possano essere utilizzati e riutilizzati regolarmente. Ad esempio, per la ricerca riproducibile, un’immagine contenitore che includa tutto il software e le fonti necessarie per il modello, la sua simulazione e l’analisi dei dati generati è estremamente utile.
Un’immagine container può essere creata utilizzando un Containerfile standard (Dockerfile per Docker). Il riferimento completo per Containerfile/Dockerfile è disponibile al link: https://docs.docker.com/engine/reference/builder/ [qui].
Creiamo un contenitore di esempio che esegue questo breve frammento di codice.
#!/usr/bin/env python3
# esempio di file sorgente Python
# salvato nella directory corrente come nest-test.py
import nest
nest.version()
Il nostro semplice Containerfile si presenta così:
DA fedora:33 come fedora-33
# Installa i pacchetti richiesti, in questo caso: NEST
RUN sudo dnf install python3-nest -y
COPY nest-test.py .
# Comando predefinito da eseguire
CMD ["python", "nest-test.py"]
Possiamo quindi creare la nostra immagine contenitore:
ls
File contenitore nest-test.py
podman build -f Containerfile -t neurofedora/nest-test
PASSAGGIO 1: DA fedora:33 COME fedora-33
PASSAGGIO 2: ESEGUI sudo dnf install python3-nest -y
Fedora 33 openh264 (From Cisco) - x86_64 1.9 kB/s | 2.5 kB 00:01
....
Completato!
--> 2efea29a8db
PASSAGGIO 3: COPIA nest-test.py .
--> b23a5c6f90d
PASSAGGIO 4: CMD ["python3", "nest-test.py"]
PASSAGGIO 5: COMMIT neurofedora/nest-test
--> da9240e572b
da9240e572b4c08ac010001cbc15cb81ae879c63dca70afa4b3e6f313254b218
La nostra immagine è ora pronta per essere utilizzata:
$ podman image list
REPOSITORY TAG IMAGE ID CREATED SIZE
localhost/neurofedora/nest-test latest da9240e572b4 17 seconds ago 911 MB
Una volta eseguito, esegue il nostro semplice script:
$ podman run neurofedora/nest-test
[INFO] [2021.1.6 11:36:36 /builddir/build/BUILD/nest-simulator-2.20.1/nest-simulator-2.20.1/nestkernel/rng_manager.cpp:217 @ Network::create_rngs_] : Creating default RNGs
[INFO] [2021.1.6 11:36:36 /builddir/build/BUILD/nest-simulator-2.20.1/nest-simulator-2.20.1/nestkernel/rng_manager.cpp:260 @ Network::create_grng_] : Creating new default global RNG
06 gen 11:36:36 CopyFile [Errore]:
Impossibile aprire il file sorgente.
Errore nel file di risorse nest: /BadIO in CopyFile_
-- N E S T --
Copyright (C) 2004 The NEST Initiative
Versione: nest-2.20.1
Built: 10 agosto 2020 00:00:00
Questo programma viene fornito COSÌ COM'È e SENZA ALCUNA GARANZIA.
Consultare il file LICENZA per i dettagli.
Problemi o suggerimenti?
Visita https://www.nest-simulator.org
Digita 'nest.help()' per saperne di più su NEST.
Allo stesso modo, qualsiasi pacchetto dai repository Fedora può essere utilizzato nei contenitori usando dnf
(non solo i pacchetti NeuroFedora). Inoltre, possiamo includere software usando pip
e altri gestori di pacchetti, proprio come faremmo su un sistema normale.
Want to help? Learn how to contribute to Fedora Docs ›