Коли мені був потрібен певний дистрибутив на сучасній станції лінукс, я вживав schroot. Більш продуманим рішенням було б використовувати LXC. Проте на тій самій сторінці радять systemd-nspawn як альтернативу. Тож я вирішив спробувати її нещодавно, коли потрібно було приготувати CentOS 7 для роботи.

Встановлення просте: просто отримати дерево кореневої файлової системи. Потрібно було виправити недоступність директорії /tmp/.X11-unix з контейнера — зв’язав явно з не-tmpfs. Створив стартовий скрипт, щоб було зручно запускати систему:

#!/bin/bash

cur_dir=`readlink -f $(dirname ${BASH_SOURCE[0]})`

xhost +local:

# Зауважте, що --bind /tmp/.X11-unix насправді не зберігає сокети,
# краще їх передати через /w

sudo systemd-nspawn \
    -D $cur_dir/centos \
    -b \
    -n \
    --bind /w \
    --bind /home/sakhnik

Результат вражаючий. Система «завантажується» в термінал входу:

Завантажений CentOS 7

Я використав віртуальне локальне з’єднання до мережі в контейнері з допомогою systemd-networkd:

Конфігурація мережі

Поки що добре. Подивімося пізніше, наскільки цей контейнер придатний для роботи.