Docker обновила свою контейнерную платформу. В новой версии системы для создания и исполнения контейнеров Docker Engine 1.10 появились усиленные средства защиты, а инструменты управления контейнерами Docker Composer 1.6 и кластеризации Docker Swarm 1.1 дополнены новыми компонентами.
В состав Docker Engine 1.10 включены средства для работы с пространствами имен пользователей, позволяющие присваивать им полномочия более низкого уровня, чем у суперпользователя (root privilege). Суперпользователь имеет права системного администратора и может открывать все ресурсы хоста своего контейнера. Пространства имен позволяют минимизировать или свести к нулю возможности пользователя действовать за пределами своего контейнера.
По словам Скотта Джонстона, старшего вице-президента Docker, это было сделано по многочисленным запросам членов сообщества Docker, которые настойчиво просили устранить это слабое место в защите.
С помощью Docker Engine 1.10 можно присвоить каждому контейнеру соответствующий уровень групповых полномочий. Для большинства пользователей это будет означать получение более низких прав, чем у суперпользователя. Как объяснил Джонстон, если такой пользователь попытается действовать за пределами своего контейнера, то по умолчанию у него не будет доступа по записи и лишь ограниченный доступ по чтению. Это достигается с помощью средств настройки политик и пространства имен пользователей.
Еще одно связанное с защитой новшество называется Seccomp (secure computing mode). Это — новый функционал, интегрированный с ядром системы Linux, поверх которой работает Docker. Seccomp направлен на решение проблем защиты контейнеров, которые давно беспокоили пользователей и были связаны с тем, что контейнер мог выполнять любые системные вызовы к ядру Linux. Теперь для каждого контейнера можно задать определенный набор разрешенных вызовов, и ОС будет блокировать все остальные. По словам Джонстона, Seccomp упрощает защиту контейнеров за счет применения к ним задаваемых по умолчанию ограничений, которые можно изменять в случае необходимости.
В число таких системных вызовов можно включать команду операционной системе активировать аккаунт, обратиться к диску или перезагрузить систему. Ограничения на вызовы от приложений уже являются стандартным функционалом защищенных систем Linux. Теперь они станут частью работы контейнеров.
Важной частью платформы Docker является инструмент Docker Composer, который позволяет разработчику задавать конечные свойства контейнера, необходимые для его развертывания. В Docker Composer 1.6 появились средства, с помощью которых разработчик может задавать для контейнера сетевые ресурсы и объем памяти, не зная, как будут организованы эти связи и какие сети и системы хранения будут использоваться. Раньше этот процесс был сложным и чреватым ошибками.
Новая версия системы кластеризации Docker Swarm 1.1 дополнена средствами автоматического перераспределения контейнеров в случае отказа сервера, на котором они работают. Автоматический перезапуск контейнера на работоспособном узле обеспечивает непрерывную работу контейнеризированного приложения. Но сейчас Docker Swarm 1.1 еще является экспериментальным релизом и не всегда функционирует стабильно.
Помимо автоматического перезапуска контейнеров Docker Swarm теперь может постоянно добавлять новые узлы, отслеживая появление новых доступных узлов и включая их в кластер таким образом, чтобы они разделяли рабочую нагрузку контейнера. При этом оператору выдаются сообщения об изменениях состояния и об ошибках.