Представлен релиз инструментария для управления изолированными Linux-контейнерами Docker 1.7, предоставляющего высокоуровневый API для манипуляции контейнерами на уровне изоляции отдельных приложений. В частности, Docker позволяет, не заботясь о формировании начинки контейнера, запускать произвольные процессы в режиме изоляции и затем переносить и клонировать сформированные для данных процессов контейнеры на другие серверы, беря на себя всю работу по созданию, обслуживанию и сопровождению контейнеров. Код Docker написан на языке Go и распространяется под лицензией Apache 2.0.
Инструментарий базируется на применении встроенных в ядро Linux штатных механизмов изоляции на основе пространств имён (namespaces) и групп управления (cgroups). Для создания контейнеров предлагается использовать libcontainer (обёртка над namespaces и cgroups), также возможно применение lxc, libvirt, systemd-nspawn, OpenVZ контейнеров с помощью библиотеки LibCT и других систем изоляции. Для формирования контейнера достаточно загрузить базовый образ окружения (docker pull base), после чего можно запускать в изолированных окружениях произвольные приложения (например, для запуска bash можно выполнить "docker run -i -t base /bin/bash").
Из добавленных в Docker 1.7 новшеств можно отметить:
- Полностью переработан код организации сетевого взаимодействия - связанный с настройкой сети код вынесен в несколько отдельных библиотек, которые можно использовать в сторонних проектах.
- Интеграция драйвера для хранения образов в файловой системе ZFS;
- С целью повышения качества кода полностью переписана система разделов хранения;
- Проведён внутренний рефакторинг, который помог ускорить работу многих компонентов, повысил их стабильность и упростил сопровождение;
- В команду exec добавлены опции -u|--user для задания владельца нового процесса;
- Добавлена поддержка настройки квоты CPU для планировщика CFS (Completely Fair Scheduler) через опцию "--cpu-quota";
- Реализованы средства для управления приоритетом ввода/вывода, включаемые через опцию "--blkio-weight";
- Параллельно с основной версией выпущен экспериментальный вариант релиза Docker 1.7, в котором представлены изменения, требующие обсуждения перед окончательным включением в стабильную ветку. В частности, в экспериментальный релиз включены значительные изменения в организации работы сети - контейнеры теперь соединяются между собой через разные хосты. Также представлен новый CLI-интерфейс настройки сети, который предоставляет более гибкие возможности в организации сетевого взаимодействия.
- Вторым важным новшеством экспериментального релиза является поддержка плагинов, выполняемых в форме отдельных процессов-обрабочиков. Первыми реализованы плагины для поддержки бесшовного подключения контейнеров к различным сетевым системам и плагины для организации хранилищ, например, позволяющие работать с сетевыми хранилищами, такими как Flocker.
- Представлен runC - легковесный универсальный runtime для обеспечения работы контейнеров. runC предоставляет обособленный набор компонентов для запуска контейнеров на широком спектре систем, позволяя обойтись только наличием платформы Docker без других внешних зависимостей - поддержка различных технологий изоляции будет уже встроена в runtime контейнера. Для организации работы с контейнерами runC поддерживает пространства имён Linux (namespaces), различные средства повышения безопасности Linux (SELinux, Apparmor, seccomp, cgroups, capability, pivot_root, сброс uid/gid), live-миграцию (используется CRIU), возможности создания контейнеров в
Windows 10, переносимые профили производительности (предоставлены Google). В будущем ожидается поддержка платформ ARM, Power и SPARC, различных аппаратных возможностей (DPDK, sr-iov, tpm, secure enclave).
- Выпуск инструмента Machine 0.3, предназначенного для быстрого развёртывание хостов в гостевых окружениях систем виртуализации VirtualBox, VMware, AWS, Digital Ocean и Microsoft Azure. Осуществляет создание начинки сервера, установку на него Docker и настройку клиента для работы с данным сервером. В новой версии добавлена возможность передачи настроек демонам Engine и Swarm, реализована поддержка операционных систем Red Hat Enterprise Linux, Fedora, Debian и RancherOS, возможность импорта виртуальных машин, созданных при помощи инструментария Boot2Docker, поддержка копирования файлов между хостами, добавлен новый драйвер generic для настройки Docker на любом хосте по SSH.
- Выпуск инструмента Swarm 0.3, предоставляющего средства кластеризации для упакованных в контейнеры приложений. Swar даёт возможность управлять кластером из нескольких хостов Docker (например, созданных с использованием Docker Machine) в форме работы с одним виртуальным хостом. Так как Swarm использует штатный Docker API, он может применяться для управления и другими поддерживающими данный API инструментами, такими как dokku, fig, krane, flynn, deis, docker-ui, shipyard, drone.io, Jenkins. В новой версии обеспечена интеграция с Mesos ("docker run" теперь можно запустить в кластере Mesos), возможность запуска нескольких экземпляров первичных серверов Swarm для создания отказоустойчивых систем, полная поддержка Docker API (всё что может быть запущено в Engine теперь можно запустить в Swarm), значительное повышение стабильности.
- Выпуск инструмента Docker Compose 1.3, позволяющего организовать работу распределённого на несколько хостов приложения, в работу которого вовлечено несколько контейнеров, запущенных в кластере на базе Docker Swarm. В новой версии добавлена возможность пересоздания только изменённых контейнеров (--x-smart-recreate), добавлена поддержка определения меток для привязки сервисов, в файл конфигурации docker-compose.yml добавлены новые опции dockerfile, labels, extra_hosts, pid, cpuset, read_only, security_opt и log_driver.
Одновременно сообщается о формировании под эгидой организации Linux Foundation группы Open Container Project, которая займётся продвижением единого формата контейнеров, который будет поддерживаться различными инструментариями, а также развитием универсального runtime для запуска контейнеров, формируемого на основе libcontainer. В итоге пользователи получат возможность упаковывать свои приложения в универсальные контейнеры, которые будут работать с любым инструментарием, включая Docker, rkt, Kurma и Jetpack.
Создаваемый стандарт будет разработан сообща и изначально не будет привязан к решениям отдельных вендоров, а также будет учитывать повышенные требования к безопасности. В состав группы в том числе вошли давние конкуренты - Docker и CoreOS, ранее пытавшиеся продвигать собственные форматы контейнеров, но теперь решившие объединить свои усилия. В частности, проект CoreOS продвигал на позицию стандарта спецификациею App Container, нацеленную на создание универсального переносимого формата контейнеров и поддержанную Google, Red Hat, Apcera и VMware. Кроме Docker и CoreOS, в состав группы Open Container Project также вошли компании Microsoft, Amazon Web Services, Cisco, Google, EMC, Fujitsu, HP, Huawei, IBM, Intel, Red Hat и VMware.
|