Наиболее известным «контейнерным» проектом, обратившим взгляд на проблему распространения приложений, стал Docker. Именно этот проект и принес в массы термин «контейнер» в смысле унифицированного средства доставки и запуска приложений в различных пользовательских системах.
К моменту появления Docker средства изоляции приложений в Linux уже стали достаточно зрелыми, чтобы накладные расходы на запуск программ в контейнерах были невелики – по крайней мере, они уже были существенно ниже ресурсов, требуемых для запуска таких же программ в полноценных виртуальных машинах. Создатели Docker позаботились и о проблеме избыточного места, которые занимают на диске дублирующиеся компоненты разных приложений, – этот вопрос решается посредством «слоев», из которых формируется каждый контейнер.
Docker недолго был одинок в этом сегменте рынка – достаточно быстро у него появился сильный конкурент в виде CoreOS – дистрибутива Linux (ныне известного как Container Linux), в котором все приложения запускаются внутри контейнеров собственного формата. Спустя некоторое время «подтянулась» и Canonical с проектом LXD – правда, он в первую очередь нацелен на удобство управления контейнерами LXC, а не на распространение приложений. Для последнего сценария Canonical представил отдельный инструмент – Snappy, о котором чуть ниже.
Чем же примечателен Docker для вендоров приложений и пользователей? Упаковать уже собранное приложение в образ Docker – задача довольно тривиальная, а скачать образ и запустить контейнер на его основе – и того проще. Утилита docker (доступная практически во всех современных дистрибутивах Linux) выступает в роли альтернативы пакетному менеджеру, позволяя скачивать и обновлять образы программ, а официальный Docker Hub выступает в роли магазина приложений. Можно подключать и другие реестры по образу и подобию Docker Hub – вендорам развернуть их не сложнее, чем настроить репозиторий пакетов RPM или Deb.
Полноценный переход на Docker или аналог для существующих дистрибутивов был бы очень радикальным шагом. Неудивительно, что первопроходцем в этой сфере стал проект, созданный с нуля, – уже упомянутый выше Container Linux. В нем нет пакетного менеджера как такового, а все приложения запускаются в виде контейнеров.
Сама ОС предоставляет только базовый набор компонентов, необходимых для контейнерной виртуализации. При этом управлять контейнерами можно с использованием уже известных средств – либо низкоуровневых docker и rkt (собственного движка, созданного как улучшенная альтернатива docker), либо высокоуровневого Kubernetes. По наличию последнего нетрудно догадаться, что Container Linux нацелен прежде всего на использование в облаках и кластерах.
Выход CoreOS не остался без внимания конкурентов, и уже к концу 2014 года компания Red Hat представила бета-версию Red Hat Enterprise Linux 7 Atomic Host – специализированную ОС, устроенную практически так же, как Container Linux: с запуском всех приложений в контейнерах Docker и использованием Kubernetes для управления Удобство администрирования кластеров и обеспечение безопасности работающих в них приложений актуальны для облачных сервисов, уже отвоевавших заметную долю рынка у традиционных серверных решений Администрирование 20 июль-август 2017 системный администратор виртуализация этими контейнерами. Концепция этой минималистской системы в настоящее время развивается в рамках отдельного проекта Atomic Host, на основе которого, помимо RHEL, создаются сборки CentOS и Fedora.
Наша команда имеет большой опыт внедрение контейнерных систем, обращайтесь [email protected]