Обзор
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. Будьте осторожны при запуске недоверенного кода.