Авторские статьи

LXD 2.0: LXD в LXD [8/12].


В восьмой статье познакомимся со вложенными контейнерами и создадим Матрицу.

Введение

В предыдущей статье было рассказано как использовать Docker внутри LXD. Данный способ позволяет получить вашим пользователям безопасную среду для приложений, развёрнутых через Докер. А что если пользователям хотелось бы развернуть другие Linux дистрибутивы или позволить другой группе людей получить доступ к Linux системам, запустив контейнер для них?

LXD делает это изящно через вложенные контейнеры.

Вложенные LXD

Самый простой способ продемонстрировать вложенность, использовать Ubuntu 16.04. Облачный образ Ubuntu 16.04 идёт с установленным LXD, хотя демон не запущен, то есть не использует ресурсы, пока вы не начнёте взаимодействие с ним.

Давайте просто начнём с создания контейнера на базе Ubuntu 16.04 с включённой вложенностью: lxc launch ubuntu-daily:16.04 c1 -c security.nesting=true

Так же указать ключ вложенности можно и в уже существующий контейнер - lxc config set имя-контейнера security.nesting true
Или для всех контейнеров, использующих конкретный профиль - lxc profile set имя-профиля security.nesting true

С запущенным контейнером, вы можете запустить шелл, сконфигурировать внутри LXD и запустить контейнер.
lxc launch ubuntu-daily:16.04 c1 -c security.nesting=true

Creating c1
Starting c1

lxc exec c1 bash
root@c1:~# lxd init

Name of the storage backend to use (dir or zfs): dir

We detected that you are running inside an unprivileged container.
This means that unless you manually configured your host otherwise,
you will not have enough uid and gid to allocate to your containers.

LXD can re-use your container's own allocation to avoid the problem.
Doing so makes your nested containers slightly less safe as they could
in theory attack their parent container and gain more privileges than
they otherwise would.

Would you like to have your containers share their parent's allocation (yes/no)? yes
Would you like LXD to be available over the network (yes/no)? no
Do you want to configure the LXD bridge (yes/no)? yes
Warning: Stopping lxd.service, but it can still be activated by:
 lxd.socket
LXD has been successfully configured.

root@c1:~# lxc launch ubuntu:14.04 trusty

Generating a client certificate. This may take a minute...
If this is your first time using LXD, you should also run: sudo lxd init

Creating trusty
Retrieving image: 100%
Starting trusty

root@c1:~# lxc list

+--------+---------+-----------------------+----------------------------------------------+------------+-----------+
|  NAME  |  STATE  |         IPV4          |                     IPV6                     |    TYPE    | SNAPSHOTS |
+--------+---------+-----------------------+----------------------------------------------+------------+-----------+
| trusty | RUNNING | 10.153.141.124 (eth0) | fd7:f15d:d1d6:da14:216:3eff:fef1:4002 (eth0) | PERSISTENT | 0         |
+--------+---------+-----------------------+----------------------------------------------+------------+-----------+

Онлайн демо-сервер

Так как статья получилась коротенькая, то добавлена информация об ознакомительном демо-сервере. Данный сервер использует LXD внутри виртуальной машины с небольшим демоном, реализующим REST API для использования сайтом. После принятия условия использования, вам создадут LXD контейнер с поддержкой вложенности.

Если вы хотите сделать свой веб-сервер, то берите код
git clone github.com/lxc/linuxcontainers.org
git clone github.com/lxc/lxd-demo-server


В комментариях к оригинальной статье, Стефан Грабер дал ответ про тип хранилища внутри вложенных контейнеров. Сейчас "искаропки" работает только хранилище типа dir. Если вы правильно укажите опции для btrfs, то lxd может использовать этот тип. На демо сервере используется btrfs ради минимизации занятого пространства. Что касается zfs, то её разработчики планируют поддержку zfs внутри контейнера, но когда это будет реализовано неизвестно.

Оглавление цикла статей про LXD 2.0.
Предыдущая статья LXD 2.0: Docker в LXD [7/12].
Следующая статья LXD 2.0: Живая миграция [9/12].

Дата последней правки: 2023-12-27 16:43:08

RSS vasilisc.com   


Разделы

Главная
Новости
Ворох бумаг
Видео Linux
Игры в Linux
Безопасность
Статьи об Astra Linux
Статьи о FreeBSD
Статьи об Ubuntu
Статьи о Snappy
Статьи об Ubuntu Phone
Статьи о Kubuntu
Статьи о Xubuntu
Статьи о Lubuntu
Статьи об Open Source
Карта сайта