Использование контейнеров (Docker/Podman)
Поскольку пакеты NeuroFedora доступны в репозиториях Fedora, их также можно использовать в настроенных контейнерах на основе базовых контейнеров Fedora. Сообщество Fedora выпускает образы контейнеров для всех выпусков Fedora, которые можно получить из стандартных публичных реестров образов контейнеров, таких как Docker Hub.
Podman — это замена Docker, не требующая административного доступа. В большинстве случаев его можно использовать как прямую замену Docker. В системе Fedora Podman можно установить с помощью dnf.
sudo dnf install podman
Чтобы использовать Docker, обратитесь к документации Docker. Fedora также включает программное обеспечение Toolbox, которое позволяет использовать контейнеризованные среды командной строки. Toolbox можно установить с помощью dnf:
sudo dnf install toolbox
Вы можете узнать больше о нём на странице документации Fedora Silverblue.
Интерактивное использование контейнеров выпусков Fedora
Хотя образ контейнера CompNeuro включает множество инструментов для вычислительной нейробиологии, любой пакет из репозиториев Fedora можно использовать в контейнере, используя базовые контейнеры выпусков Fedora. Простой пример использования контейнера Fedora для работы с пакетом NeuroFedora показан ниже. Здесь мы используем базовый образ контейнера Fedora, устанавливаем требуемый пакет и проверяем, что он работает.
Сначала мы загружаем базовый образ контейнера 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
Затем мы запускаем образ в интерактивном режиме.
podman run -it fedora:latest /bin/bash
# терминал в контейнере
[root@95b9db71272f /]#
Это даёт нам контейнер, с которым мы можем работать в интерактивном режиме. Здесь мы можем установить пакет так же, как и в установке Fedora, например:
[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!
Затем мы можем выполнять команды как обычно:
[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]:
Создание образов контейнеров
Хотя интерактивная работа довольно полезна, ещё полезнее создавать образы контейнеров с определёнными наборами пакетов, которые затем можно регулярно использовать и переиспользовать. Для воспроизводимых исследований, например, наиболее полезен образ контейнера, включающий всё необходимое программное обеспечение и исходные данные для модели, её симуляции и анализа сгенерированных данных.
Образ контейнера можно создать с помощью стандартного Containerfile (Dockerfile для Docker). Полный справочник по Containerfile/Dockerfile можно найти здесь.
Давайте создадим пример контейнера, который запускает этот короткий фрагмент кода.
#!/usr/bin/env python3
# пример исходного файла Python
# сохранён в текущем каталоге как nest-test.py
import nest
nest.version()
Наш простой Containerfile выглядит так:
FROM fedora:33 as fedora-33
# Установить требуемые пакеты, в данном случае: NEST
RUN sudo dnf install python3-nest -y
COPY nest-test.py .
# Команда по умолчанию для запуска
CMD ["python", "nest-test.py"]
Затем мы можем собрать наш образ контейнера:
ls
Containerfile nest-test.py
podman build -f Containerfile -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
Наш образ теперь готов к использованию:
$ podman image list
REPOSITORY TAG IMAGE ID CREATED SIZE
localhost/neurofedora/nest-test latest da9240e572b4 17 seconds ago 911 MB
При запуске он выполняет наш простой скрипт:
$ 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.
Аналогичным образом любой пакет из репозиториев Fedora можно использовать в контейнерах с помощью dnf (не только пакеты NeuroFedora). Кроме того, мы также можем включать программное обеспечение с помощью pip и других менеджеров пакетов, точно так же, как на обычной системе.
Want to help? Learn how to contribute to Fedora Docs ›