Container verwenden (Docker/Podman)
Da die NeuroFedora-Pakete in den Fedora-Paketquellen verfügbar sind, können sie auch in benutzerdefinierten Containern verwendet werden, die auf den Fedora-Basiscontainern basieren. Die Fedora-Community veröffentlicht Container-Abbilder für alle Fedora-Versionen, die von gängigen öffentlichen Container-Abbild-Registries wie z.B. Docker Hub bezogen werden können.
Podman ist ein Docker-Ersatz, der keine Administratorrechte benötigt. In den meisten Fällen kann es als direkter Ersatz für Docker verwendet werden. Auf einem Fedora-System lässt sich Podman mit dnf installieren.
sudo dnf install podman
Informationen zur Verwendung von Docker finden Sie in der Docker-Dokumentation. Fedora enthält außerdem die Software Toolbox, die die Nutzung containerisierter Befehlszeilenumgebungen ermöglicht. Toolbox kann mit dnf installiert werden:
sudo dnf install toolbox
Auf der Dokumentationsseite zu Fedora Silverblue erfahren Sie mehr darüber.
Interaktive Nutzung der Fedora-Release-Container
Obwohl das CompNeuro-Container-Abbild eine Vielzahl von Werkzeugen für die Computerneurowissenschaften enthält, kann jedes Paket aus den Fedora-Paketquellen mithilfe der Fedora-Basis-Release-Container in einem Container verwendet werden. Ein einfaches Beispiel für die Verwendung eines NeuroFedora-Pakets in einem Fedora-Container ist unten dargestellt. Hier verwenden wir das Fedora-Basis-Container-Abbild, installieren das benötigte Paket und testen dessen Funktion.
Zuerst holen wir uns das Basis-Container-Abbild von Fedora:
podman pull fedora:latest
Resolved short name "fedora" to a recorded short-name alias (origin: /etc/containers/registries.conf.d/shortnames.conf)
Trying to pull registry.fedoraproject.org/fedora:latest...
Getting image source signatures
Copying blob 8fde7942e775 [--------------------------------------] 0.0b / 0.0b
Copying config 79fd58dc76 done
Writing manifest to image destination
Storing signatures
79fd58dc76113dac76a120f22cadecc3b2d1794b414f90ea368cf66096700053
Wir führen dann das Abbild interaktiv aus.
podman run -it fedora:latest /bin/bash
# Terminal im Container
[root@95b9db71272f /]#
Dadurch erhalten wir einen Container, mit dem wir interaktiv arbeiten können. Wir können hier beispielsweise ein Paket installieren, wie wir es auch auf einer Fedora-Installation tun würden:
[root@95b9db71272f /]# sudo dnf install python3-nest
Last metadata expiration check: 0:06:14 ago on Wed Jan 6 10:41:28 2021.
Dependencies resolved.
================================================================================
Package Arch Version Repo Size
================================================================================
Installing:
python3-nest x86_64 2.20.1-5.fc33 updates 518 k
Installing dependencies:
....
....
Complete!
Wir können dann normale Befehle ausführen:
[root@95b9db71272f /]# ipython
Python 3.9.0 (default, Oct 6 2020, 00:00:00)
Type 'copyright', 'credits' or 'license' for more information
IPython 7.18.1 -- An enhanced Interactive Python. Type '?' for help.
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_] : Creating default RNGs
[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_] : Creating new default global RNG
Jan 06 11:10:43 CopyFile [Error]:
Could not open source file.
Error in nest resource file: /BadIO in CopyFile_
-- N E S T --
Copyright (C) 2004 The NEST Initiative
Version: nest-2.20.1
Built: Aug 10 2020 00:00:00
This program is provided AS IS and comes with
NO WARRANTY. See the file LICENSE for details.
Problems or suggestions?
Visit https://www.nest-simulator.org
Type 'nest.help()' to find out more about NEST.
In [2]: nest.version()
Out[2]: 'NEST nest-2.20.1'
In [3]:
Container-Abbilder erstellen
Interaktives Arbeiten ist zwar sehr nützlich, aber noch sinnvoller ist es, Container-Abbilder mit spezifischen Paketsätzen zu erstellen, die dann regelmäßig verwendet und wiederverwendet werden können. Für reproduzierbare Forschung ist beispielsweise ein Container-Abbild, das die gesamte notwendige Software und alle Quellcodes für das Modell, seine Simulation und die Analyse der generierten Daten enthält, am nützlichsten.
Ein Container-Abbild kann mithilfe einer Standard-Container-Datei (Docker-Datei für Docker) erstellt werden. Die vollständige Referenz für die Container-Datei/Docker-Datei finden Sie hier.
Wir erstellen einen Beispielcontainer, der diesen kurzen Codeschnipsel ausführt.
#!/usr/bin/env python3
# Beispielhafte Python-Quelldatei, gespeichert
# im aktuellen Verzeichnis als nest-test.py
import nest
nest.version()
Unsere einfache Container-Datei sieht folgendermaßen aus:
FROM fedora:33 as fedora-33
# Erforderliche Pakete installieren, in diesem Fall: NEST
RUN sudo dnf install python3-nest -y
COPY nest-test.py .
# Auszuführender Standardbefehl
CMD ["python", "nest-test.py"]
Dann können wir unser Container-Abbild bauen:
ls
Container-Datei nest-test.py
podman build -f Container-Datei -t neurofedora/nest-test
STEP 1: FROM fedora:33 AS fedora-33
STEP 2: RUN sudo dnf install python3-nest -y
Fedora 33 openh264 (From Cisco) - x86_64 1.9 kB/s | 2.5 kB 00:01
....
Complete!
--> 2efea29a8db
STEP 3: COPY nest-test.py .
--> b23a5c6f90d
STEP 4: CMD ["python3", "nest-test.py"]
STEP 5: COMMIT neurofedora/nest-test
--> da9240e572b
da9240e572b4c08ac010001cbc15cb81ae879c63dca70afa4b3e6f313254b218
Unser Abbild ist nun fertig zur Verwendung:
$ podman image list
REPOSITORY TAG IMAGE ID CREATED SIZE
localhost/neurofedora/nest-test latest da9240e572b4 17 seconds ago 911 MB
Bei der Ausführung wird unser einfaches Skript ausgeführt:
$ 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
Jan 06 11:36:36 CopyFile [Error]:
Could not open source file.
Error in nest resource file: /BadIO in CopyFile_
-- N E S T --
Copyright (C) 2004 The NEST Initiative
Version: nest-2.20.1
Built: Aug 10 2020 00:00:00
This program is provided AS IS and comes with
NO WARRANTY. See the file LICENSE for details.
Problems or suggestions?
Visit https://www.nest-simulator.org
Type 'nest.help()' to find out more about NEST.
In ähnlicher Weise können beliebige Pakete aus den Fedora-Paketquellen in Containern mit dnf verwendet werden (nicht nur NeuroFedora-Pakete). Darüber hinaus können wir Software auch mit pip und anderen Paketmanagern einbinden, genau wie auf einem normalen System.
Want to help? Learn how to contribute to Fedora Docs ›