Источник:
1 |
https://blog.selectel.ru/systemd-i-kontejnery-znakomstvo-s-systemd-nspawn/ |
Команды создания:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
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:
1 2 3 4 5 |
machinectl list - вывести список всех имеющихся в системе контейнеров machinectl status test_container - просмотреть информацию о статусе контейнера machinectl login test_container - войти в контейнер ( Ctrl+]]] - нажатие этих лавиш выход из контейнера) machinectl reboot test_container - перезагрузить контейнер machinectl poweroff test_container - остановить контейнер |
автозагрузка контейнера 0:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
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:
1 2 3 4 |
Воспользоватся заготовка конфигурационного файла для автоматического запуска контейнеров из каталога /var/lib/machines: # sudo systemctl enable machine.target # mv ~/test_container /var/lib/machines/test_container # sudo systemctl enable systemd-nspawn@test_container.service |
Логи контейнера:
1 2 3 |
systemd-nspawn -D /var/lib/machines/container1/ --machine test_container -b --link-journal=host - включение логов journalctl -u <имя контейнера>.service - просмотр логов на хосте journalctl -M test_container - просмотр логов на хосте |
Управление ресурсами хоста для контейнера:
1 |
systemctl set-property <имя контейнера> CPUShares=200 CPUQuota=30% MemoryLimit=500M |