Контейнери 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
Відео: 🏬 1С Підприємство 8.3 на Linux Ubuntu - Крок 3 - Установка Apache2 x32 на Ubuntu x64 і Nginx на фронт
Далі налаштовуємо мережу в контейнері:
$ 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 [Linux Conteiners]
У цьому списку вам належить вибрати потрібну операційну систему. Просто введіть необхідні параметри, ім`я, реліз і архітектура, вибравши їх зі списку доступних, наприклад, для Ubuntu Yakkety Yak 64 біт:
Потім почнеться завантаження вже готового, налаштованого образу з інтернету. Це може зайняти досить багато часу якщо у вас повільний інтернет.
Також ви можете використовувати не інтерактивний режим і вказати всі необхідні параметри відразу в командному рядку:
$ Lxc-start -n ubu1 -dОпція -n задає ім`я контейнера, в нашому випадку - ubu1, а -d говорить утиліті запуску, що потрібно виконувати програму у фоновому режимі. Ви можете переконатися, що контейнер запущений за допомогою такої команди:
$ Lxc-attach -n ubu1Після підключення ви отримуєте повний root доступ до файлів в контейнері, далі рекомендується задати пароль root і створити користувача:
$ Adduser losstНалаштування системи або установка програм виконується точно так же, як і в звичайній системі, наприклад установка програм:
$ Lxc-stop -n ubu1Ця команда проведе правильне завершення роботи контейнера і він більше не буде споживати ресурсів системи, крім дискового простору.
клонування контейнерів
Після того як ви встановили всі необхідні програми в контейнері і налаштували його як потрібно, можна створити кілька його копій для спрощення налаштування нових контейнерів і експериментів. Для цього є команда 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 = 1lxc.start.delay = 5
Перший рядок означає, що контейнер потрібно запускати при старті системи, а друга вказує, що потрібно почекати п`ять секунд перед запуском наступного контейнера, якщо такі є.
Вирішення проблем
Якщо у вас виникнуть проблеми з запуском контейнерів, перше що потрібно зробити, це спробувати запустити контейнер lxc з опцією -F, запуск не буде відправлений у фоновий режим і ви побачите все помилки:
$ Sudo vi / etc / lxc / lxc-usernet- Битви за контейнери
- Продуктивність ігор linux vs wine vs windows
- Як протестувати microsoft edge в windows, mac і linux
- Що нового в linux kernel 4.9
- Intel virtualization technology що це? [Пункт bios]
- Що ж таке virtualbox?
- Що таке віртуалізація kvm
- Установка двох linux на комп`ютер
- Оновлення драйверів ubuntu
- 5 Міфів про контейнерах linux
- Установка virtualbox в ubuntu 16.04
- Установка ssh ubuntu 16.04
- Тестування завантажувальних флешок з використанням засобів віртуалізації.
- Дозвіл екрану virtualbox в ubuntu
- Bootstrap 4. Контейнери та ключові точки.
- Virtualbox для linux
- Virtualbox не бачить usb в ubuntu
- Установка docker на ubuntu 16.04
- Установка openvz в ubuntu
- Продуктивність ubuntu 16.04 vs ubuntu 16.10
- Установка kvm ubuntu 16.04