Контейнеры systemd-nspawn


Это более простые контейнеры, чем LXC.

Если нужна IP-адресация в таких контейнерах - то для настройки сети
рекомендуется использовать демон 'systemd-networkd'

1. Создание

# pacstrap -c /LXC/FirstContainer base 

2. Первоначальная настройка

# echo "pts/0" >> /LXC/FirstContainer/etc/securetty
# systemd-nspawn -D /LXC/FirstContainer
# passwd
# hostnamectl set-hostname build
# logout

Сочетание Ctrl+]]] = SIGTERM

3. Запуск

# systemd-nspawn -b -D  /LXC/FirstContainer

4. Настройка сети

# systemctl edit systemd-nspawn@.service

[Service]
ExecStart=
ExecStart=/usr/bin/systemd-nspawn --quiet --keep-unit --boot \
   --link-journal=try-guest --network-bridge=br0 --network-veth --machine=%i


5. Персональная настройка контейнера делается через персональную службу

# systemctl edit systemd-nspawn@firstcontainer.service

[Unit]
After=network-online.target remote-fs.target ypbind.service nscd.service ldap.service ntpd.service xntpd.service
Wants=network-online.target

[Service]
ExecStart=
ExecStart=/usr/bin/systemd-nspawn --quiet --keep-unit --boot --link-journal=try-guest \
	--bind=/mnt/:/mnt/data --network-bridge=br0 --network-veth --machine=%i

После этого можно работать через machinectl

6. Чтобы привязать гостевой хост к мосту - внутри нужно поднять systemd-networkd

# /etc/systemd/network/10-container.network

[Match]
Virtualization=container
Name=vb-*

[Network]
DHCP=yes
#LinkLocalAddressing=no

# systemctl enable systemd-networkd
# systemctl enable systemd-resolved

7. Глубокие зависоны лечатся:

# systemctl restart systemd-logind


#