systemd-nspawn (Русский)
Related articles
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 группу
- pacstrap -i -c -d ~/MyContainer base [additional pkgs/groups]
После того, как ваша установка будет завершена, загружается в контейнер:
- systemd-nspawn -b -D ~/MyContainer -n
эта -b
-b опция загрузки контейнера (т.е. запустить systemd
, как PID = 1), вместо того, чтобы просто запустить оболочку. -D
указывает каталог, который становится корневым каталогом контейнера и -n
создаст частную сеть между хостом и контейнером.
После запуска контейнера, войдите в систему как "root" без пароля.
Контейнер может быть выключен, запустив poweroff
внутри контейнера. От root, контейнеры можно управлять с помощью метода machinectl[broken link: invalid section] инструмент.