Docker: коли потрібно розміщувати контейнер на віртуальній машині?

image

Контейнери додатків гарантують високу швидкість роботи і утилізацію ресурсів, але їм не вистачає тієї безпеки, яку забезпечують віртуальні машини. Тому сьогодні хочеться поговорити про використання Docker всередині ВМ, зокрема – OpenSource проекту QEMU/KVM.

Якщо не занурюватися глибоко в специфіку різних контейнерів, можна коротко охарактеризувати Docker, як швидке і динамічний рішення, що дозволяє моментально запускати мільйони контейнерів з конкретними додатками. Docker пропонує все необхідне для запуску готових збірок з супутніми компонентами, але при цьому багато хто дотепер турбуватися про безпеку таких навантажень. Проблема полягає в тому, що Docker поки що є дуже молодим рішенням, і не всі «дитячі проблеми» вирішені. А при запуску на одній машині безлічі Docker-середовищ зловмисник чисто технічно дозволяє отримати доступ до ресурсів одного користувача через злом іншого. Погодьтеся, це не добре.
Docker всередині QEMU

Всередині Docker ізоляція реалізована сьогодні за рахунок NameSpaces, але надійність цього підходу все ще викликає сумніви. Тому досить поширеною практикою є запуск контейнера всередині віртуальної машини. Як правило вибирається саме QEMU, так як це один з найпопулярніших проектів віртуалізації з відкритим вихідним кодом. Всередині віртуальної машини QEMU вже запускаються контейнери одного користувача. Таким чином, ми знаходимо компроміс між безпекою і швидкодією, адже користувачі виявляються надійно захищені один від одного, а додатка одного власника працюють досить швидко, будучи запущеними в контейнерному оточенні.

У гонитві за швидкістю
Однак з часом, коли контейнерів стає більше, цей компроміс починає бути проблемою. Тому розробники починають активно боротися з нею. Так, в співтоваристві з'являються різні технології, що допомагають вирішити найактуальніше питання – підвищити продуктивність більш захищених середовищ, що працюють з використанням Docker.

Наприклад, ClearLinux представляє собою власний дистрибутив Intel, який розрахований не тільки на роботу в рамках екосистеми intel architecture, але також на розширену підтримку Docker. ClearLinux має можливість налаштування «шарів» — окремих компонентів файлової системи, з яких формується коренева директорія контейнера Docker. Це дозволяє значно підвищити ефективність роботи з гіпервізором. Рішення дуже перспективний, але основні свої переваги, звичайно, показує тільки на обладнанні Intel.

Інший варіант – використання Unikernel. Спеціально підготовлені образи ОС дозволяють зменшити вплив на продуктивність присутності ядра ОС в гостьовій ВМ (де вже запускається Docker). Спеціально полегшені ядра різних ОС з регламентованим адресним простором – це перевірені, підтримувані і готові для комерційного використання рішення, оптимізовані для роботи з певними додатками. Якщо під потрібне вам додаток, яке ви збираєтеся використовувати в Docker, вже був створений Unikernel, значить ви зможете використовувати ізоляцію ВМ c куди більшою ефективністю.

Ми в Virtuozzo також продовжуємо стежити за еволюцією Docker і пропонуємо своє рішення даної проблеми. Так, гіпервізор KVM на базі Virtuozzo не тільки дозволяє використовувати полегшені ВМ, але також підтримує ряд оптимізацій саме для запуску Docker-контейнерів. В додаток до цього легкі ВМ на OpenVZ і комерційної Virtuozzo додають до можливостей KVM функції резервного копіювання і додаткового моніторингу безпеки, вносячи свою лепту в захист екосистеми Docker, запущеної в рамках ВМ.

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

image

В екосистемі Virtuozzo ми взагалі розглядаємо Docker, як один з можливих варіантів запуску навантажень в загальній віртуальному середовищі – нарівні з легкими віртуальними машинами і традиційними віртуальними машинами (на базі різних ОС). Сьогодні активно ведуться роботи по розширенню підтримки сервісів про-Docker, таких як hub, compose, kubernetes, flocker, libnetwork, різних засобів перевірки безпеки тощо

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

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.