Обзор
systemd-nspawn запускает контейнеры, разделяя ядро хост-системы, но изолируя файловую систему, дерево процессов, сеть и т. д. Это полезно для безопасной изоляции сред разработки и тестирования или для тестирования сред других дистрибутивов.
Основные возможности
- Предоставляет легковесную контейнерную среду
- Разделяет ядро хоста и обеспечивает эффективность ресурсов
- Изолирует файловую систему, процессы и сеть
- Более сильная изоляция, чем у chroot
- Поддерживает загрузку контейнеров на основе systemd
Основные опции
Основные опции systemd-nspawn управляют поведением контейнера, уровнем изоляции, сетевыми настройками и т. д.
Базовые настройки контейнера
Сетевые настройки
Ресурсы и права доступа
Сгенерированная команда:
Комбинируйте команды.
Описание:
`systemd-nspawn` Запускает команду.
Комбинируйте эти опции, чтобы виртуально выполнять команды с помощью ИИ.
Примеры использования
Примеры запуска различных контейнерных сред с использованием systemd-nspawn.
Базовый запуск контейнера (bash)
sudo systemd-nspawn -D /var/lib/machines/mycontainer /bin/bash
Запускает контейнер с указанной корневой файловой системой и выполняет оболочку bash.
Контейнер с загрузкой systemd
sudo systemd-nspawn -b -D /var/lib/machines/mycontainer
Загружает systemd в качестве начального процесса внутри контейнера, предоставляя полноценную системную среду.
Контейнер с сетевой изоляцией
sudo systemd-nspawn --private-network -D /var/lib/machines/mycontainer /bin/bash
Запускает контейнер без сетевых интерфейсов, блокируя внешний сетевой доступ.
Монтирование пути хоста
sudo systemd-nspawn -D /var/lib/machines/mycontainer --bind=/home/user/data:/mnt/data /bin/bash
Монтирует каталог /home/user/data хоста в /mnt/data внутри контейнера.
Сетевое подключение через виртуальный Ethernet
sudo systemd-nspawn -D /var/lib/machines/mycontainer --network-veth /bin/bash
Создает виртуальный Ethernet интерфейс между хостом и контейнером для сетевого подключения.
Установка
systemd-nspawn является частью пакета `systemd-container`. В большинстве дистрибутивов Linux на базе systemd он установлен по умолчанию или может быть легко установлен.
Debian/Ubuntu
sudo apt update && sudo apt install systemd-container
Установите пакет systemd-container с помощью пакетного менеджера apt.
Fedora/RHEL/CentOS
sudo dnf install systemd-container
Установите пакет systemd-container с помощью пакетного менеджера dnf.
Arch Linux
sudo pacman -S systemd-container
Установите пакет systemd-container с помощью пакетного менеджера pacman.
Советы и предостережения
Советы и предостережения для эффективного использования systemd-nspawn.
Основные советы
- Требуются права root: systemd-nspawn обращается к системным ресурсам, поэтому его необходимо запускать с
sudoили от имени пользователя root. - Подготовка образа контейнера: Корневая файловая система контейнера должна быть подготовлена заранее. Ее можно создать с помощью таких инструментов, как
debootstrap,dnf --installroot,pacstrap. - Понимание сетевых настроек:
--network-vethразрешает связь между хостом и контейнером, а--private-networkполностью изолирует контейнер. Выбирайте подходящие опции в зависимости от ваших задач. - Вопросы безопасности: systemd-nspawn обеспечивает сильную изоляцию, но поскольку он разделяет ядро хоста, он может быть более уязвим к ошибкам безопасности по сравнению с полными решениями виртуализации, такими как Docker. Будьте осторожны при запуске недоверенного кода.