Docker: преимущества и недостатки

Несмотря на то, что технология контейнеризации существует уже много лет, на самом деле «горячим» направлением в ИТ она стала сравнительно недавно. Основной её инструмент — платформа Docker, поэтому и обо всей технологии проще всего рассказывать на его примере.

Что такое Docker и как он работает

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

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

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

Недостатки Docker

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

Во-первых, самой по себе ее хватает на то, чтобы запускать всего несколько контейнеров. Если же приложение включает десятки сервисов, понадобится оркестратор (Kubernetes или OpenShift). А это означает дополнительное усложнение инфраструктуры.

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

Ещё стоит отметить, что изначально эта платформа разрабатывалась для Linux. Чтобы запустить ее на Windows или MacOS, придётся сначала поднять виртуальную машину с Linux. Это, разумеется, повышает расход ресурсов и налагает кое-какие другие ограничения (например, не поддерживаются некоторые виды сетей). При установке на Windows также иногда возникают конфликты с Virtual Box (хотя и не на всех устройствах).

Впрочем, всё это не отменяет того, что контейнеризация — стремительно развивающаяся сфера. Можно не сомневаться, что в обозримом будущем этот метод будет обретать всё большую популярность и распространение.