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

Related articles

- systemd
- Linux Containers
- systemd-networkd
- Docker
- Lxc-systemd

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 США клавиатура будет использовать `%` вместо `]`
Category:

- Virtualization (Русский)

Hidden category:

- Pages with broken section links