LXC – хорошее решение для быстрого получения изолированного окружения (контейнера) с возможностью сохранения состояния (stateful). Любые изменения будут сохранены, в этом ключевое отличие от Docker.
Установка
apt-get update
apt-get install lxd
Настройка
- Вначале выполните:
lxd init
Подтвердите все вопросы ответами по умолчанию. Можере изменить ответ на вопрос Name of the storage backend to use (btrfs, dir, lvm) [default=btrfs]: dir
, выбрав директории в качестве способа хранения данных. Так проще получить к ним доступ из-вне и резервировать их (обычным tar или rsync).
- Список репозитариев. Выполните команду и убедитесь, что у вас подключены внешние URL.
lxc remote list
+-----------------+------------------------------------------+---------------+-----------+--------+--------+
| NAME | URL | PROTOCOL | AUTH TYPE | PUBLIC | STATIC |
+-----------------+------------------------------------------+---------------+-----------+--------+--------+
| images | https://images.linuxcontainers.org | simplestreams | | YES | NO |
- Получите список доступных образов в репозитарии:
lxc image list images:
Вы можете сделать выборку (grep
той операционной системы, которая нужна вам для установки внутри контейнера):
lxc image list images: | grep 'ubuntu.*18.04.*amd64'
Старт
- Запустить контейнер с именем
ubuntu01
из образаubuntu/18.04
:
lxc launch images:ubuntu/18.04 ubuntu01
- Получить список запущенных контейнеров:
lxc list
- Зайти в запущенный контейнер:
lxc exec ubuntu01 -- /bin/bash
Теперь вы внутри контейнера, можете устанавливать и настраивать программы, заливать данные.
Если выиспользовали директории (dir
) в качестве хранилища для контейнеров, вы можете получить доступ к его файлам тут: /var/lib/lxd/containers/
. Используйте его только для целей резервирования.
Изменение
- Подключение внешней директории (тома / диска):
lxc config device add ubuntu01 srv disk source=/mnt/storage/srv/data/ path=/srv
- Запуск контейнера от привилегированного пользователя (root=root) без смещения uid на 100000 :
lxc config set ubuntu01 security.privileged true
- Изменение конфигурации внутренней сети lxdbr0:
lxc network show lxdbr0
lxc network set lxdbr0 ipv4.address 10.10.107.1/24
или создание новой:
lxc network create lxdbr0 ipv6.address=none ipv4.address=10.0.3.1/24 ipv4.nat=true
выделений IP адреса для контейнера:
lxc network attach lxdbr0 ubuntu01 eth0
lxc config device set ubuntu01 eth0 ipv4.address 10.10.107.123