Разработчики и системные администраторы могут, наконец, согласиться в одном — контейнеры дают разработчикам возможность экспериментировать безо всяких рисков и ограничений. Виртуальные контейнеры — это каталоги (если вы сторонник Windows, можете называть их папками), которые безопасным образом изолированы от остального пространства операционной системы. По сути, контейнер — это безопасная система для разработки, которая совместно с хостовой операционной системой использует наиболее важные файлы, при этом позволяя разработчику создавать приложение, не опасаясь возможных негативных последствий для хоста. Контейнер оснащен своим собственным IP-адресом, идентификатором, файловой системой (только несколько файлов «одалживаются» у хоста) и уровнем выполнения.
Все уже привыкли к тому, что системные администраторы и разработчики ПО постоянно спорят друг с другом по поводу прав пользователей, прав приложений, доступа с привилегиями администратора, размещения приложений и требований к выделяемому дисковому пространству. Контейнерная виртуализация снимает все эти противоречия, кроме вопроса о дисковом пространстве. Системные администраторы сохраняют за собой привилегию выделения места на диске для контейнеров, но в остальных вопросах разработчики администрируют свой контейнер как хотят. Они могут перезагружать контейнер, когда им вздумается, устанавливать любое ПО и выполнять любые тесты и эксперименты, не опасаясь побеспокоить хост.
Что еще делает контейнеры столь привлекательными для разработчиков — это возможность отлаживать приложение ровно в той же среде, в которой оно будет эксплуатироваться. Традиционно отладка ведется в среде, имеющей ряд отличий от промышленной — иная процессорная архитектура (например, меньше ядер), отличия в версиях базового ПО, иной график установки обновлений.
Эти неприятные отличия создают проблемы в поддержке ПО, которые способны свести администратора с ума. Разработчики предпочитают строить приложения с использованием самых свежих версий используемого ПО. Но администраторы рабочих сред не позволят ставить такие версии, так как к ним есть вопросы по части стабильности и наличия уязвимостей, и эти вопросы вполне справедливы, особенно к ПО на стадии бета-версии.
Однако применение контейнеров снимает целый ряд подобных сложностей отладки ПО на промышленной системе. Разработчики могут использовать самые свежие версии нужных инструментов и проверять стабильность их работы. Все возможные уязвимости оказываются «заперты» в контейнере и не несут рисков для промышленной системы.
Одной из наиболее популярных контейнерных систем является Docker. Это открытая платформа, дающая разработчикам и системным администраторам возможность создавать, распространять и выполнять распределенные приложения. В контейнерах Docker приложения могут работать на любой операционной системе. Использование Docker позволяет ускорить разработку приложений и сократить время их подготовки к началу продаж пользователям.
Контейнеры представляют собой облегченную альтернативу традиционным виртуальным машинам. Разработчикам они дают возможность отладки в промышленной среде, а системным администраторам — гарантию стабильности рабочей среды. Контейнеры уже достаточно давно существуют на рынке, но сейчас они переживают взлет популярности благодаря низким накладным расходам, высокому уровню безопасности и стабильности, а также обеспечению целостности «приютившей» их операционной системы.
Если вы разработчик, то вам следует опробовать контейнеры в своей работе. Если вы системный администратор, то вам стоит разрешить использование этих изолированных сред в поддерживаемых вами системах.