Контейнеры systemd-nspawn: различия между версиями
Дым (обсуждение | вклад) (→Сеть) |
Дым (обсуждение | вклад) (→Сеть) |
||
Строка 50: | Строка 50: | ||
DHCP = ipv4 | DHCP = ipv4 | ||
</source> | </source> | ||
Перезапустив systemd-networkd как изнутри контейнера, так и снаружи, увидим на хосте: | |||
# networkctl | |||
IDX LINK TYPE OPERATIONAL SETUP | |||
1 lo loopback carrier unmanaged | |||
2 lan ether routable configured | |||
3 ve-spawn-1 ether routable configured | |||
3 links listed. | |||
# ip -o a s ve-spawn-1 | awk '!/inet6/{print $2,$4}' | |||
ve-spawn-1 192.168.222.254/24 | |||
А в контейнере: | |||
[root@spawn-1 ~]# networkctl | |||
IDX LINK TYPE OPERATIONAL SETUP | |||
1 lo loopback carrier unmanaged | |||
2 host0 ether routable configured | |||
2 links listed. | |||
[root@spawn-1 ~]# ip -o a s host0 | awk '!/inet6/{print $2,$4}' | |||
host0 192.168.222.146/24 | |||
{{Category navigation|title=Виртуализация|category=Виртуализация|sortkey={{SUBPAGENAME}}}} | {{Category navigation|title=Виртуализация|category=Виртуализация|sortkey={{SUBPAGENAME}}}} | ||
[[category:systemd]] | [[category:systemd]] |
Версия от 09:56, 2 октября 2020
Установка
Первым делом не обойтись без установки пакета означенной в заголовке системы виртуализации:
# apt-get update && apt-get install systemd-container -y
Вторым — понадобится минимальный образ системы, годный для виртуальных сред контейнерного типа (LXC, Docker и т.п.), взять который можно в репозитории. На момент написания статьи привлекательнее прочих выглядел этот.
Развернём предварительно скачанный тарбол в контейнер (допустим, первый из них будет называться spawn-1):
# machinectl import-tar alt-p9-rootfs-systemd-x86_64.tar.xz spawn-1 Enqueued transfer job 1. Press C-c to continue download in background. Importing '/var/lib/machines/alt-p9-rootfs-systemd-x86_64.tar.xz', saving as 'spawn-1'. Imported 0%. ... Imported 99%. Operation completed successfully. Exiting.
Запуск
Стартанём новый контейнер, одновременно включив его запуск при каждой загрузке компьютера:
# systemctl enable --now systemd-nspawn@spawn-1 Created symlink /etc/systemd/system/machines.target.wants/systemd-nspawn@spawn-1.service → /lib/systemd/system/systemd-nspawn@.service.
Проверим, всё ли удалось:
[root@comp ~]# systemctl status systemd-nspawn@spawn-1 ● systemd-nspawn@spawn-1.service - Container spawn-1 Loaded: loaded (/lib/systemd/system/systemd-nspawn@.service; enabled; vendor preset: disabled) Active: active (running) since Thu 2020-10-01 21:38:31 +08; 8s ago Docs: man:systemd-nspawn(1) ...
Работает. Заходим локально:
# machinectl shell spawn-1 Connected to machine spawn-1. Press ^] three times within 1s to exit session. [root@spawn-1 ~]#
Настройка
Сеть
Построим с хоста мостик до контейнера, обозвав его ve-<имя контейнера>, в файле /etc/systemd/network/ve-spawn-1.network
:
[Match]
Name = ve-spawn-1
[Network]
DHCPServer = yes
Address = 192.168.222.254/24
А со стороны контейнера примем его файликом /etc/systemd/network/host0.network
:
[Match]
Name = host0
[Network]
DHCP = ipv4
Перезапустив systemd-networkd как изнутри контейнера, так и снаружи, увидим на хосте:
# networkctl IDX LINK TYPE OPERATIONAL SETUP 1 lo loopback carrier unmanaged 2 lan ether routable configured 3 ve-spawn-1 ether routable configured
3 links listed. # ip -o a s ve-spawn-1 | awk '!/inet6/{print $2,$4}' ve-spawn-1 192.168.222.254/24
А в контейнере:
[root@spawn-1 ~]# networkctl IDX LINK TYPE OPERATIONAL SETUP 1 lo loopback carrier unmanaged 2 host0 ether routable configured 2 links listed. [root@spawn-1 ~]# ip -o a s host0 | awk '!/inet6/{print $2,$4}' host0 192.168.222.146/24