Главная > Управление пакетами и системой > systemd-nspawn

systemd-nspawn: Запуск легковесных контейнеров

systemd-nspawn, часть проекта systemd, представляет собой инструмент для создания и запуска изолированных сред Linux-контейнеров без использования виртуальных машин. Он используется для создания сред для тестирования, разработки и развертывания, обеспечивая изоляцию системы, которая мощнее, чем chroot, и легче, чем виртуальные машины.

Обзор

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


Те же команды в категории