systemd-nspawn (Русский)

systemd-nspawn аналогична команде chroot, но это chroot на стероидах.

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

systemd-nspawn ограничивает доступ к различным интерфейсам ядра в контейнере только для чтения, например, /sys, /proc/sys or /sys/fs/selinux. Сетевые интерфейсы и системные часы не могут быть изменены внутри контейнера. Узлы устройства не могут быть созданы. Хост-система не может быть перезагружен и модули ядра не могут быть загружены из внутри контейнера.

Этот механизм отличается от Lxc-systemd или Libvirt-lxc, так как это более простой инструмент для настройки

Установка

systemd-nspawn является частью и упаковываются с systemd.

Примеры

Создание и загрузка минимального дистрибутива Arch Linux в контейнере

С начала установим пакет arch-install-scripts.

Далее создадим папку для хранения контейнера, в примере используется ~/MyContainer. Далее, мы используем pacstrap для установки базового экземпляра системы в контейнере. Как минимум нам нужно установить base группу

  1. pacstrap -i -c -d ~/MyContainer base [additional pkgs/groups]
Tip: -i Опция автовыбора пакетов. AТак как вам не нужно установить ядро Linux в контейнере, вы можете удалить его из списка выбора пакета для экономии места. Подробнее Pacman#Usage.

После того, как ваша установка будет завершена, загружается в контейнер:

  1. systemd-nspawn -b -D ~/MyContainer -n

эта -b -b опция загрузки контейнера (т.е. запустить systemd, как PID = 1), вместо того, чтобы просто запустить оболочку. -D указывает каталог, который становится корневым каталогом контейнера и -n создаст частную сеть между хостом и контейнером.

После запуска контейнера, войдите в систему как "root" без пароля.

Контейнер может быть выключен, запустив poweroff внутри контейнера. От root, контейнеры можно управлять с помощью метода machinectl[broken link: invalid section] инструмент.

Note: Для завершения сеанса из внутри контейнера, удерживая Ctrl и быстро нажмите ] три раза. Non США клавиатура будет использовать % вместо ]