Контейнеры systemd-nspawn: различия между версиями
Дым (обсуждение | вклад) |
Дым (обсуждение | вклад) Нет описания правки |
||
Строка 5: | Строка 5: | ||
Ещё понадобится минимальный образ системы, годный для виртуальных сред контейнерного типа — LXC или Docker. Взять можно в репозитории; на момент написания статьи привлекательнее прочих выглядел [http://ftp.altlinux.ru/pub/distributions/ALTLinux/p9/images/cloud/alt-p9-rootfs-systemd-x86_64.tar.xz этот]. | Ещё понадобится минимальный образ системы, годный для виртуальных сред контейнерного типа — LXC или Docker. Взять можно в репозитории; на момент написания статьи привлекательнее прочих выглядел [http://ftp.altlinux.ru/pub/distributions/ALTLinux/p9/images/cloud/alt-p9-rootfs-systemd-x86_64.tar.xz этот]. | ||
=Настройка= | =Настройка= | ||
Допустим, первый контейнер будет называться <strong> | Допустим, первый контейнер будет называться <strong>spawn-1</strong>. Тогда распаковать этот образ надо в каталог <code>/var/lib/machines/spawn-1/</code>, предварительно оный создав. | ||
Дабы впоследствии не мучиться со входом в контейнер с отлупом по паролю, следует задать таковой пользователю <strong>root</strong>, для чего первый вход произвести в незапущенный контейнер. | Дабы впоследствии не мучиться со входом в контейнер с отлупом по паролю, следует задать таковой пользователю <strong>root</strong>, для чего первый вход произвести в незапущенный контейнер. | ||
Строка 12: | Строка 12: | ||
# systemd-nspawn --quiet --keep-unit --boot --link-journal=try-guest --network-veth -U --settings=override --machine=%i | # systemd-nspawn --quiet --keep-unit --boot --link-journal=try-guest --network-veth -U --settings=override --machine=%i | ||
В нашем случае, поупрощённей, без загрузки и не нужной на этом этапе опции <code>--keep-unit</code>: | В нашем случае, поупрощённей, без загрузки и не нужной на этом этапе опции <code>--keep-unit</code>: | ||
# systemd-nspawn -q -j -n -U --settings=override -M | # systemd-nspawn -q -j -n -U --settings=override -M spawn-1 | ||
Получив приглашение <code>[root@ | Получив приглашение <code>[root@spawn-1 ~]# </code>, задаём пароль и выходим: | ||
[root@ | [root@spawn-1 ~]# passwd | ||
passwd: updating all authentication tokens for user root. | passwd: updating all authentication tokens for user root. | ||
... | ... | ||
Enter new password: | Enter new password: | ||
Re-type new password: | Re-type new password: | ||
passwd: all authentication tokens updated successfully. | passwd: all authentication tokens updated successfully. | ||
[root@ | [root@spawn-1 ~]# exit | ||
logout | logout | ||
Запустим новый контейнер, одновременно включив его запуск при каждой загрузке компьютера: | Запустим новый контейнер, одновременно включив его запуск при каждой загрузке компьютера: | ||
# systemctl enable --now systemd-nspawn@ | # systemctl enable --now systemd-nspawn@spawn-1 | ||
Created symlink /etc/systemd/system/machines.target.wants/systemd-nspawn@ | 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@ | [root@comp ~]# systemctl status systemd-nspawn@spawn-1 | ||
● systemd-nspawn@ | ● systemd-nspawn@spawn-1.service - Container spawn-1 | ||
Loaded: loaded (/lib/systemd/system/systemd-nspawn@.service; enabled; vendor preset: disabled) | 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 | Active: active (running) since Thu 2020-10-01 21:38:31 +08; 8s ago | ||
Строка 33: | Строка 33: | ||
... | ... | ||
Работает. Заходим уже штатным образом: | Работает. Заходим уже штатным образом: | ||
# machinectl login | # machinectl login spawn-1 | ||
{{Category navigation|title=Системному администратору|category=Admin|sortkey={{SUBPAGENAME}}}} | {{Category navigation|title=Системному администратору|category=Admin|sortkey={{SUBPAGENAME}}}} | ||
{{Category navigation|title=Виртуализация|category=Виртуализация|sortkey={{SUBPAGENAME}}}} | {{Category navigation|title=Виртуализация|category=Виртуализация|sortkey={{SUBPAGENAME}}}} | ||
[[category:systemd]] | [[category:systemd]] |
Версия от 02:05, 2 октября 2020
Подготовка
Первым делом не обойтись без установки пакета означенной в заголовке системы виртуализации:
# apt-get update && apt-get install systemd-container -y
Ещё понадобится минимальный образ системы, годный для виртуальных сред контейнерного типа — LXC или Docker. Взять можно в репозитории; на момент написания статьи привлекательнее прочих выглядел этот.
Настройка
Допустим, первый контейнер будет называться spawn-1. Тогда распаковать этот образ надо в каталог /var/lib/machines/spawn-1/
, предварительно оный создав.
Дабы впоследствии не мучиться со входом в контейнер с отлупом по паролю, следует задать таковой пользователю root, для чего первый вход произвести в незапущенный контейнер.
Как контейнеры запускаются, можно подглядеть в пункте ExecStart
сервисного шаблона /lib/systemd/system/systemd-nspawn@.service, а именно:
# systemd-nspawn --quiet --keep-unit --boot --link-journal=try-guest --network-veth -U --settings=override --machine=%i
В нашем случае, поупрощённей, без загрузки и не нужной на этом этапе опции --keep-unit
:
# systemd-nspawn -q -j -n -U --settings=override -M spawn-1
Получив приглашение [root@spawn-1 ~]#
, задаём пароль и выходим:
[root@spawn-1 ~]# passwd passwd: updating all authentication tokens for user root. ... Enter new password: Re-type new password: passwd: all authentication tokens updated successfully. [root@spawn-1 ~]# exit logout
Запустим новый контейнер, одновременно включив его запуск при каждой загрузке компьютера:
# 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 login spawn-1