Рубрики
systemd-nspawn Виртуализация \ контейнеры \ облака

Systemd и контейнеры

Источник:

https://blog.selectel.ru/systemd-i-kontejnery-znakomstvo-s-systemd-nspawn/

Команды создания:

apt install debootstrap bridge-utils - установка необходимых зависимостей
_________________________________________________________________________
debootstrap --arch=amd64 jessie /var/lib/machines/container1/ - создадим файловую систему для будущего контейнера
systemd-nspawn -D /var/lib/machines/container1/ --machine test_container  - запуск контейнера (появится приглашение login) 
Ctrl+]]] - нажатие этих клавиш выход из контейнера
_________________________________________________________________________
systemd-nspawn -D /var/lib/machines/container1/ --machine test_container  -b - при запуске экземпляра операционной системы в контейнере нужно выполнить init с запуском всех демонов
_________________________________________________________________________
brctl addbr cont-bridge - создание моста для контейнера
ip a a [IP-адрес] dev cont-bridge - назначение IP адреса для контейнера
_________________________________________________________________________
systemd-nspawn -D /var/lib/machines/container1/ --machine test_container --network-bridge=cont-bridge -b - добавление сетевой карты  для контейнера (мост)
systemd-nspawn -D /var/lib/machines/container1/ --machine test_container -b --network-ipvlan=[сетевой интерфейс] - добавление сетевой карты  для контейнера (сетевой интерфейс)
_________________________________________________________________________

Команды управления machinectl:

machinectl list - вывести список всех имеющихся в системе контейнеров
machinectl status test_container - просмотреть информацию о статусе контейнера
machinectl login test_container - войти в контейнер ( Ctrl+]]] - нажатие этих лавиш выход из контейнера)
machinectl reboot test_container - перезагрузить контейнер
machinectl poweroff test_container - остановить контейнер

автозагрузка контейнера 0:

nano /etc/systemd/system/file_name 
_________________________________________________________________________
[Unit]
Description=Test Container

[Service]
LimitNOFILE=100000
ExecStart=/usr/bin/systemd-nspawn --machine=test_container --directory=/var/lib/machines/container1/ -b --network-ipvlan=[сетевой интерфейс] 
Restart=always

[Install]
Also=dbus.service
_________________________________________________________________________
systecmctl start test_container - запуск контейнера
systecmctl enable test_container - включение автозагрузки контейнера

автозагрузка контейнера 1:

Воспользоватся заготовка конфигурационного файла для автоматического запуска контейнеров из каталога /var/lib/machines:
 # sudo systemctl enable machine.target
 # mv ~/test_container /var/lib/machines/test_container
 # sudo systemctl enable systemd-nspawn@test_container.service

Логи контейнера:

systemd-nspawn -D /var/lib/machines/container1/ --machine test_container -b --link-journal=host - включение логов
journalctl -u <имя контейнера>.service - просмотр логов на хосте
journalctl -M test_container - просмотр логов на хосте

Управление ресурсами хоста для контейнера:

systemctl set-property <имя контейнера> CPUShares=200 CPUQuota=30% MemoryLimit=500M