MyTetra Share
Делитесь знаниями!
Справка по LXD/LXC (Контейнеры Linux)
Время создания: 13.01.2021 13:41
Автор: alensav
Текстовые метки: Справка по LXD/LXC (Контейнеры Linux)
Раздел: !!LXD
Запись: alensav/MyTetra2/main/base/1610534518eoihnysbh8/text.html на raw.githubusercontent.com

L XD/LXC (Linux Containers) manual / Справка по LXD/LXC (Контейнеры Linux)

05.01.2019 zotovp

До открытия для себя LXC я использовал для изоляции сервисов на домашнем сервере chroot. Да, технология не новая, однако хорошо себя зарекомендовавшая. Но, к счастью, прогресс технологий в наше время дает нам все более совершенные инструменты, среди которых я порой нахожу вещи, которые не могут не радовать технофила. Далее расскажу, как можно организовать домашний сервер так, чтобы было удобно им управлять, бекапить и создавать сервисы, которые будут независимы и безопасно разделены между собой.

1. Основа

LXC это набор инструментов для контейнеризации целых ОС, в отличии от Докера, который больше заточен под релизы и тесты для разработчиков, тут больше пространства для маневра, без надобности вдаваться сильно в зависимости и синтаксис конфигурационных файлов. Серьезно, для домашних служб Докер монстровато выглядит. Ладно, хватит субъективностей, раз я LXC выбрал, расскажу тут все полезное, что раскопал, пока строил заново домашние сервисы на новой платформе.

Первое, что и очень важное, это выбор хостовой системы для нашего контейнерного парка. К слову, я пробовал реализации lxc/lxd на debian, arch, centos, ubuntu, и выиграл по многим параметрам по моему мнению ubuntu 18.04 LTS. Не буду тут все расписывать подробно за и против, решайте сами что кому по душе.

Итак, я установил хостовую систему ubuntu 18.04 LTS. Настроил по своему вкусу безопасность и остальное, что мы там любим настроить на свежей системе. Перейдем к делу.

2. Служба LXD

Да, тут важно знать, что в выбранном мною ubuntu server 18.04 LTS по умолчанию уже есть демон LXD, поэтому установка тут описываться не будет. LXD это надстройка над LXC, гипервизор, который упрощает взаимодействие с системой контейнеризации. Если хочется подробнее почитать, что это, то вот ссылка .

3. Возможности

Самая полезная часть статьи — рецепты, как и что можно использовать с помощью LXD

Поехали

Инициализация LXD

Первый запуск предупредит о том, что мы должны инициализировать через команду lxd_init систему контейнеризации, то есть указать начальные настройки. Запускаем и дальше как по мастеру. Отвечаем на вопросы по своему вкусу.

#lxd_init 

Создание нового контейнера

Если нужно просто создать контейнер, но не запускать его, достаточно выполнить команду:

#lxc init ubuntu:18.04 container1 

Положить/забрать файл из контейнера.

LXC предоставляет хорошие возможности для управления контейнерами «на лету». Вот так, например, можно поместить созданный на основном хосте файл внутрь контейнера:

#lxc file push [путь к файлу на основном хосте] [контейнер]/[путь]
#lxc file push tmp/dialplan.xml asterisk/tftproot/ 

Можно совершить и обратную операцию — загрузить файл из контейнера на основной хост:

#lxc file pull [контейнер]/[путь] 

Редактирование файлов из основной системы

Можно и редактировать файлы в контейнере напрямую:

#lxc edit [контейнер]/[путь] 

Создать общий ресурс

#lxc config device add [контейнер] [имя_ресурса] [тип, к примеру disk] path=[путь_внутри_контейнера] source=[пусть_на_хостовой_системе] 

Что-то выполнить в контейнере

#lxc exec container1 -- apt-get update 

Сделать снапшот этого контейнера

#lxc snapshot container1 [имя_снапшота] 

Восстановить работу контейнера

#lxc restore container1 new 

Импорт различных образов

LXD основан на образах. Контейнеры создаются из образа, поэтому хранилище образов должно содержать несколько образов перед основной работой с LXD.
Есть несколько путей заполнить хранилище:

  • Используя удаленный LXD как сервер образов
  • Используя встроенные источники образов
  • Вручную импортируя по одному
#lxc image import <file> --alias <name> 

Использование удаленного LXD как сервера образов

Использование удаленного сервера образов также просто, как его добавление и использование:

#lxc remote add images 1.2.3.4
#lxc launch images:image-name your-container 

Список контейнеров и их статусов в системе

#lxc list 

Список доступных образов в списке

#lxc image list images: 

Клонировать и экспортировать образ рабочего контейнера

#lxc publish CONTAINER_NAME/SNAPSHOT_NAME --alias my-export
#lxc image export my-export . 

Импорт образа в систему и создание контейнера на его основе

#lxc image import TARBALL --alias my-export
#lxc init my-export NEW-CONTAINER 

Создание пула для хранения образов

#lxc storage create store-name dir source=/var/snap/cryptdata/storage/ 

Локация для хранения профиля по умолчанию

#lxc profile device add default root disk path=/ pool=media 

Просмотреть доступные снапшоты контейнера

#lxc info example --verbose 

Связать с определннным мостом и задать статический IPv4 адрес

Кстати, очень удобный инструмент, позволяющий держать систему в нескольких или различных сетях на одном хосте, при этом в основной системе требуется для этого организовать лишь интерфейс типа мост, к которому потом прикрепляем контейнер и задаем внутреннее имя интерфейса.

#lxc network attach testbr0 c1 eth0
#lxc config device set c1 eth0 ipv4.address 10.0.3.123 

Если хотим удалить мост, который создается lxc

Редактируем файл «/etc/default/lxc-net» и меняем

USE_LXC_BRIDGE="true" 

на

USE_LXC_BRIDGE="false" 

Переместить пул хранилища

Я люблю хранить все конфигурации в определенном мною месте, поэтому тут способ, как переместить дефолтное хранилище наиболее безболезненно.

Останавливаем LXD, перемещаем содержимое /var/lib/lxd в новую директорию, после этого делаем симлинк на новое место, и можно запускать LXD

#ln -s /mnt/largepool/lxd /var/lib/lxd 

Позволить не-root пользователю управлять системой контейнеризации LXD

#usermod --append --group lxd freeman 

Проброс устройств

Шикарная возможность, позволяющая пробрасывать устройства внутрь контейнера, основываясь на vendor/product id, так как многие usb устройства любят менять свой номер устройства на шине pci (в листинге вывода lsusb). Подробнее по параметрам тут .

#lxc config device add pcsx2 ps3controllerblack usb vendorid=054c productid=0268 

Автозапуск контейнера при запуске основной системы

Флаг автозапуска и приоритеты запуска, для того, чтобы определить очередность запуска контейнеров и задержку перед запуском

#lxc config set {vm-name} boot.autostart true
#lxc config set {vm-name} boot.autostart.priority integer
#lxc config set {vm-name} boot.autostart.delay integer 

Скрипт для просмотра вышеуказанных параметров автозапуска всех контейнеров

#!/bin/bash
x=$(lxc list -c n | awk '{ print $2}' | sed -e '/^$/d' -e '/^NAME/d')
echo 'The current values of each vm boot parameters:'
for c in $x
do
echo "*** VM: $c ***"
for v in boot.autostart boot.autostart.priority boot.autostart.delay 
do
echo "Key: $v => $(lxc config get $c $v)"
done
echo ""
done 

Вот, в кратце все команды, что могут пригодиться поначалу.

Реклама

Пожаловаться на это объявление

Поделиться ссылкой:

  • Twitter
  • Facebook

Похожее

Install OpenVPN to LXD(lxc) on Ubuntu with WEB GUI panel (monitoring & management) / Установка OpenVPN на LXD(lxc) на Ubuntu с ВЕБ-интерфейсом (управление и мониторинг) В "Администрирование"

Install hass.io (home assistant) inside LXD (lxc) on Ubuntu 18.04 LTS - privileged Docker container inside LXD (lxc) / Установка hass.io (home assistant) внутри контейнера LXD на Ubuntu 18.04 LTS - запуск привилегированного контейнера внутри LXD (lxc) В "Docker"

Setup TFTP server on Linux/Настройка TFTP сервера на Linux В "Debian" Администрирование , Гипервизоры , Программное обеспечение , Linux/Unix , LXC/LXD , Ubuntu lxc , lxd , Ubuntu

Previous Article Telegram bot (library pyTelegramBotAPI) / Бот Телеграма (библиотека pyTelegramBotAPI)

Next Article Setup TFTP server on Linux/Настройка TFTP сервера на Linux

Добавить комментарий

Рубрики

  • Администрирование (128)
  • Оборудование (10)
    • Камеры (1)
      • Mi Yi Smart (1)
    • Манипуляторы (1)
      • Мыши (1)
      • Microsoft Comfort Mouse 4500 (1)
    • Ноутбуки (1)
      • Lenovo Yoga 2 Pro (1)
    • Сервера (1)
      • HP DL380 G6 (1)
    • Сети (6)
    • Mikrotik (6)
  • Программное обеспечение (121)
  • Базы данных (5)
    • MongoDB (1)
    • MySQL (2)
    • PostgreSQL (2)
  • Браузеры (3)
    • Chromium Egde (1)
    • Google Chrome (1)
  • Генераторы IP пакетов (1)
    • LOIC (1)
  • Гипервизоры (13)
    • Docker (2)
    • LXC/LXD (2)
    • Oracle VirtualBox (1)
    • VMWare (2)
    • Xen (7)
  • Загрузчики (1)
    • grub4dos (1)
  • Облака (2)
  • Офис (2)
    • Microsoft Excel (1)
    • Microsoft Outlook (1)
  • Протоколы (4)
    • OpenVPN (1)
    • OSPF (1)
    • RDP (1)
    • TFTP (1)
  • Развлекательные приложения (3)
    • Игры (1)
    • KyBook/OPDS (1)
    • Plex Media Server (1)
  • Системы мониторинга (1)
    • Zabbix (1)
  • Терминальные клиенты (2)
    • SecureCRT (1)
    • ZOC Terminal (1)
  • Утилиты (3)
  • Фреймворки (1)
    • Django (1)
  • Эмуляторы (7)
    • eve-ng (5)
    • UNetLab (6)
  • Языки программирования (7)
    • Perl (2)
    • PowerShell (2)
    • Python (3)
  • iOS (1)
  • Linux/Unix (55)
    • CentOS (13)
    • Debian (28)
    • Оболочки рабочего стола (2)
      • Cinnamon (2)
    • Elementary OS (6)
    • Enigma2 (1)
    • FreeBSD (4)
    • MX Linux (1)
    • Red Hat (7)
    • Ubuntu (26)
  • MS Windows (34)
  • Настольные ОС (22)
  • Платформа Server (19)
  • Active Directory (1)
  • MS Exchange (8)

Архивы

  • Декабрь 2020  (1)
  • Август 2020  (1)
  • Июнь 2020  (1)
  • Май 2020  (1)
  • Апрель 2020  (3)
  • Март 2020  (1)
  • Февраль 2020  (1)
  • Июль 2019  (1)
  • Июнь 2019  (2)
  • Апрель 2019  (2)
  • Январь 2019  (2)
  • Декабрь 2018  (1)
  • Ноябрь 2018  (1)
  • Август 2018  (3)
  • Апрель 2018  (1)
  • Март 2018  (2)
  • Январь 2018  (2)
  • Декабрь 2017  (2)
  • Июль 2017  (3)
  • Апрель 2017  (1)
  • Март 2017  (4)
  • Февраль 2017  (6)
  • Январь 2017  (1)
  • Ноябрь 2016  (2)
  • Октябрь 2016  (6)
  • Сентябрь 2016  (5)
  • Август 2016  (3)
  • Июль 2016  (2)
  • Июнь 2016  (1)
  • Апрель 2016  (6)
  • Март 2016  (1)
  • Февраль 2016  (1)
  • Январь 2016  (9)
  • Декабрь 2015  (2)
  • Ноябрь 2015  (1)
  • Октябрь 2015  (2)
  • Сентябрь 2015  (2)
  • Август 2015  (1)
  • Июль 2015  (3)
  • Май 2015  (2)
  • Апрель 2015  (1)
  • Март 2015  (5)
  • Февраль 2015  (3)
  • Январь 2015  (10)
  • Декабрь 2014  (1)
  • Ноябрь 2014  (1)
  • Октябрь 2014  (15)


Январь 2019

Пн

Вт

Ср

Чт

Пт

Сб

Вс

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

 

« Дек   Апр »

Метки

Active Directory ActiveSync apache2 apt-get bash boot bridge centos cmd debian Docker elementaryOS eve-ng firewall freebsd fstab grub howto install interface iou iPad iptables iso language Lenovo Yoga 2 Pro linux lxc lxd Microsoft Exchange Microsoft Windows Microsoft Windows 7 Microsoft Windows 10 mikrotik mount MySQL nat netsh nginx node.js npm ntp OpenVPN Outlook perl php-fpm port PostgreSQL Power Shell Python RDP red hat rsa key samba script singlemode sound sources ssh systemd TCP/IP teamviewer telnet Ubuntu UNetLab unix uuid vm VMWare w32tm WiFi windows xen xrdp Zabbix


Так же в этом разделе:
 
MyTetra Share v.0.64
Яндекс индекс цитирования