Контейнери linux - установка і настройка lxc

Контейнери Linux або LXC - це легка технологія віртуалізації, яка може використовуватися для вирішення різних завдань. Технологія вбудована в ядро ​​Linux і за допомогою неї ви зможете запустити кілька дистрибутивів на одному комп`ютері або сервері практично без втрат продуктивності.

LXC можна розцінювати як щось середнє між ізольованим оточенням chroot і повноцінної технологією віртуалізації Qemu, Xen, KVM або VirtualBox. Оскільки всі програми виконуються на реальному залозі, без використання віртуалізації, то ви не втрачаєте продуктивність, на відміну від випадку якби ви використовували VirtualBox. Ви можете дуже легко запустити паралельно кілька контейнерів у своїй системі, навіть при дуже низьких апаратних ресурсах, чого не можна зробити з повноцінними технологіями віртуалізації.

У цій невеликій статті ми розглянемо як виконується установка і настройка LXC в Ubuntu, а також як використовувати цю технологію.

Що таке контейнери LXC?

Перед тим як перейти до налаштування давайте розглянемо що з себе представляють контейнери Linux. Як я вже сказав, це не зовсім віртуалізація, тому що всі програми, які виконуються всередині контейнера - працюють на реальному залозі і майже не втрачають в продуктивності. Використовується, тільки одне ядро, а для розмежування наборів процесів між собою застосовуються віртуальні оточення.

Віртуальні оточення створюються за допомогою вбудованих в ядро ​​механізмів. Це в першу чергу покращений механізм chroot, який ізолює файлову систему контейнера від основної файлової системи. Але, як ви знаєте в chroot є один недолік, ви не можете запустити систему ініціалізації, оскільки програма з таким PID вже існує, але це необхідно для управління процесами і службами.

Для вирішення цієї проблеми використовуються простору імен PID, за допомогою цього механізму PID процесів контейнера не залежить від основної системи і інших контейнерів, а тому ми можемо дуже просто запустити систему ініціалізації. Ну і нарешті потрібно управляти ресурсами, для цього використовується механізм cgroups.

Відео: Установка docker на Ubuntu 16.04

Завдяки всьому цьому втрата продуктивності при використанні контейнерів LXC Linux складає не більше 1%. Тепер, коли ви знаєте як все це працює, перейдемо до опису процесу установки LXC.

Установка і настройка LXC

У цій інструкції ми будемо налаштовувати LXC в Ubuntu, оскільки це найпопулярніша операційна система, але всі ці команди підійдуть для всіх інших дистрибутивів. Відмінність складає лише команда установки. Спочатку потрібно встановити все необхідне програмне забезпечення. Установка LXC на Ubuntu виконується командою:

$ Mkdir -p ~ / .config / lxc

Налаштуємо призначені для користувача простору імен. Перша цифра означає перший UID користувача linux в контейнері, друга відповідає йому UID користувача в основній системі:


$ Echo "lxc.id_map = g 0 100000 65536" >> ~ / .config / lxc / default.conf

lxc1

Відео: 🏬 1С Підприємство 8.3 на Linux Ubuntu - Крок 3 - Установка Apache2 x32 на Ubuntu x64 і Nginx на фронт

Далі налаштовуємо мережу в контейнері:

$ Echo "lxc.network.type = veth" gt; gt; ~ / .config / lxc / default.conf
$ Echo "lxc.network.link = lxcbr0" gt; gt; ~ / .config / lxc / default.conf
$ Echo "lxc.network.flags = up" gt; gt; ~ / .config / lxc / default.conf


Потім у файлі / etc / lxc / lxc-usernet потрібно дозволити використовувати мережеві інтерфейси активного користувача, щоб отримати можливість запускати контейнер без root прав:

$ Sudo usermod --add-subuids 100000-165536 $ USER
$ Sudo usermod --add-subgids 100000-165536 $ USER

І даємо права на використання даного користувача в cgm:


$ Sudo cgm chown all user $ (id -u) $ (id -g)
$ Cgm movepid all user $$

Тепер первісна настройка завершена і ми готові перейти до завантаження та встановлення способу контейнера. Для установки в інтерактивному режимі наберіть таку команду, тут ubu1, це ім`я майбутнього контейнера:

lxc-create --template download --name ubu1

lxc2

Відео: Запуск контейнера LXC [Linux Conteiners]

У цьому списку вам належить вибрати потрібну операційну систему. Просто введіть необхідні параметри, ім`я, реліз і архітектура, вибравши їх зі списку доступних, наприклад, для Ubuntu Yakkety Yak 64 біт:

lxc3




Потім почнеться завантаження вже готового, налаштованого образу з інтернету. Це може зайняти досить багато часу якщо у вас повільний інтернет.

Також ви можете використовувати не інтерактивний режим і вказати всі необхідні параметри відразу в командному рядку:

$ Lxc-start -n ubu1 -d

Опція -n задає ім`я контейнера, в нашому випадку - ubu1, а -d говорить утиліті запуску, що потрібно виконувати програму у фоновому режимі. Ви можете переконатися, що контейнер запущений за допомогою такої команди:

$ Lxc-attach -n ubu1

lxc6

Після підключення ви отримуєте повний root доступ до файлів в контейнері, далі рекомендується задати пароль root і створити користувача:

$ Adduser losst

lxc8

Налаштування системи або установка програм виконується точно так же, як і в звичайній системі, наприклад установка програм:

$ Lxc-stop -n ubu1

lxc9

Ця команда проведе правильне завершення роботи контейнера і він більше не буде споживати ресурсів системи, крім дискового простору.

клонування контейнерів

Після того як ви встановили всі необхідні програми в контейнері і налаштували його як потрібно, можна створити кілька його копій для спрощення налаштування нових контейнерів і експериментів. Для цього є команда clone, яка створює повну копію контейнера:

Для прикладу давайте створимо клон контейнера ubu1 з ім`ям ubu2. Спочатку потрібно зупинити контейнер:

$ Lxc-copy -n ubu1 -N ubu2

Потім ви знову можете використовувати lxc-ls, щоб переконається, що контейнер був створений:

$ Lxc-stop -n ubu1

Потім використовуйте команду lxc-snapshot для створення знімка:

$ Lxc-snapshot -r snap0 -n ubu1

Вам потрібно вказати ім`я знімка і ім`я контейнера.

Запуск контейнера при старті системи

Ви можете налаштувати запуск контейнера автоматично при старті системи, наприклад, для запуску веб-сервера. Для цього відкрийте файл конфігурації контейнера та додайте такі рядки:

lxc.start.auto = 1
lxc.start.delay = 5

Перший рядок означає, що контейнер потрібно запускати при старті системи, а друга вказує, що потрібно почекати п`ять секунд перед запуском наступного контейнера, якщо такі є.

Вирішення проблем

Якщо у вас виникнуть проблеми з запуском контейнерів, перше що потрібно зробити, це спробувати запустити контейнер lxc з опцією -F, запуск не буде відправлений у фоновий режим і ви побачите все помилки:

$ Sudo vi / etc / lxc / lxc-usernet
Поділися в соціальних мережах:

Схожі
Bootstrap 4. Контейнери та ключові точки.Bootstrap 4. Контейнери та ключові точки.
Установка virtualbox в ubuntu 16.04Установка virtualbox в ubuntu 16.04
Установка docker на ubuntu 16.04Установка docker на ubuntu 16.04
Продуктивність ubuntu 16.04 vs ubuntu 16.10Продуктивність ubuntu 16.04 vs ubuntu 16.10
5 Міфів про контейнерах linux5 Міфів про контейнерах linux
Що таке віртуалізація kvmЩо таке віртуалізація kvm
Дозвіл екрану virtualbox в ubuntuДозвіл екрану virtualbox в ubuntu
Битви за контейнериБитви за контейнери
Оновлення драйверів ubuntuОновлення драйверів ubuntu
Установка двох linux на комп`ютерУстановка двох linux на комп`ютер
» » Контейнери linux - установка і настройка lxc