С ростом мощности компьютеров стало возможным на базе одной машины разворачивать несколько виртуальных. При этом каждая виртуальная машина – это полноценная операционная система внутри другой, с собственным ядром и ресурсами, изолированными от хоста и других виртуальных соседей. Для пользователя любая операционная система интересна как основа для работы приложений. При этом может возникать вопрос: зачем копить виртуальные машины и тратить на них ресурсы, если они нужны только как базис для работы приложений? Нельзя ли сократить ресурсы на прокладку виртуальной оси?
Так были придуманы контейнеры – изолированные механизмы для запуска одного приложения. Они похожи на виртуальные машины, которые работают на основе аппаратной виртуализации. Однако работают на базе ядра операционной системы. В нем пользовательское пространство разделяется на несколько независимых разделов. Такой раздел и называют контейнером. В нем можно запускать одно приложение, изолированное от остальной системы. В разделе содержится все необходимое для запуска приложения: его код, среда выполнения и конфигурационные файлы. Контейнер с приложением потребляет меньше ресурсов, чем виртуальная система с тем же запущенным приложением.
Зачем это нужно
Контейнерная технология позволила решить проблему переносимости кода. Стали менее важны операционные системы разработчиков приложения и производства. Главное – чтобы под ней работала система оркестрации (манипулирования контейнерами).
Так, технология контейнеров имеет следующие плюсы:
- ускорение времени выхода новых продуктов. С использованием контейнеров внедрение на производстве необходимых приложений теперь занимает не месяцы, а дни;
- простое конфигурирование. Стандартный контейнер работает без дополнительных настроек на любом оборудовании;
- упрощение разработки. Вполне реально создать контейнер на ноутбуке, а затем без всяких переделок воспроизвести на производстве;
- простота масштабирования. Легкость воспроизведения позволяет множить контейнеры при росте пользовательских запросов.
С чего начиналась контейнеризация
Аппараты для копирования документов появились в недрах компании XEROX (отсюда пошло «ксерокопирование»). Поиск информации в интернете стал простым благодаря Google, а у истоков технологии контейнеризации стояла компания с одноименным программным обеспечением Docker. С его помощью можно создавать контейнеры, предоставлять к ним доступ, объединять контейнеры в группы (кластеры) для повышения быстродействия и надежности работы. В Docker встроена система оркестрации контейнеров. Несколько хостов, управляемых программой, можно с помощью инструмента Docker Swarm преобразовать в кластер (или рой). Плюсы Docker Swarm:
- сравнительно прост в установке, поэтому именно с него начинают знакомство с миром оркестрации;
- нетребователен к ресурсам;
- обеспечивает балансировку нагрузки для контейнеров;
- отлично согласуется с другими инструментами Docker.
Что же выбрать
При росте числа контейнеров в проекте Docker требует подстраховки в работе. Для этого большие IT-корпорации стали разрабатывать собственные надстройки, призванные поддержать используемую систему оркестрации. В недрах Google родилась система, разработанная для собственных нужд, а затем переданная Cloud Native Computing Foundation. Система оркестрации, названная Kubernetes, расширила возможности Docker. Затем Kubernetes научилась работать и с другими системами контейнеризации. В последней версии системы разработчики вообще собираются отказаться от привязки к Docker. Для этого оркестратора остаются сравнительно простые проекты, плюс его легко освоить. А Kubernetes задействуется для сверхсложных вычислений с десятками и сотнями тысяч контейнеров.
Любое из представленного программного обеспечения успешно запускается и работает на выделенных и виртуальных серверах FirstByte.