В последнее время контейнеры Linux набирают очень большую популярность. Мы можем слышать: контейнеры быстрее,  контейнеры работают только в Linux, контейнеры небезопасны, и другие тезисы. Все это касается LXC, OpenVZ, Docker и других контейнерных технологий для Linux. Но все ли это правда?

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

Миф 1. Docker это контейнеры

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

Однако Docker не изобрели контейнеры. Здесь используются контейнерные технологии LXC, Solaris Zones и другие. Они были разработаны задолго до появления Docker. Это не единственная компания, которая поддерживает разработку контейнеров, тем же самым занимается Virtuozzo. Docker — это только система управления, и хорошо что она есть в экосистеме контейнеров, но контейнеры — это намного большее чем Docker. Рассмотрим другие мифы о Docker и контейнерах.

Миф 2. Контейнеры работают только в Linux

Это очень похоже на правду. Но в этом году Docker получил расширенную поддержку платформ Windows, а это уже означает, что контейнеры Docker могут работать в Windows. В то же время такие технологии, как LXC и OpenVZ остаются только для Linux, но это уже не относиться к Docker.

Миф 3. Контейнеры быстрее, чем виртуальные машины

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

А современные виртуальные машины и гипервизоры обеспечивают максимальную производительность. Они работают не медленнее чем на 2% за реальную машину.

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

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

Миф 4. Контейнеры сложно установить

В первые дни Docker создание и настройка контейнеров была трудной. Приходилось использовать команды LXC, но не сейчас, сейчас есть упрощенный интерфейс LXC и к тому же службы Container-as-a-service позволяют очень просто развернуть контейнеры в облаке или на сервере. Для начала работы достаточно нажать на кнопку. Вам не нужно все настраивать с нуля, когда вы используете платформу администрирования контейнеров (CaaS).

Миф 5. Контейнеры не безопасны

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

Тем не менее этот аспект дизайна контейнерных платформ не делает их принципиально небезопасными. Это просто означает что в контейнерах нет механизма безопасности, который есть в виртуальных машинах. Разработчики очень много трудились, чтобы уменьшить этот риск и нет никаких данных про удачные применение этого.

Кроме того, контейнеры стали намного безопаснее в последнее время. Ядро может быть защищено с помощью сканеров, таких как Clair, а также модулей контроля доступа ядра AppArmor и SELinux.

losst.ru