Docker 1.11 переведён на containerd и runC
14 апреля 2016 года
Представлен релиз инструментария для управления изолированными Linux-контейнерами Docker 1.11, предоставляющего высокоуровневый API для манипуляции контейнерами на уровне изоляции отдельных приложений. В частности, Docker позволяет, не заботясь о формировании начинки контейнера, запускать произвольные процессы в режиме изоляции и затем переносить и клонировать сформированные для данных процессов контейнеры на другие серверы, беря на себя всю работу по созданию, обслуживанию и сопровождению контейнеров. Инструментарий базируется на применении встроенных в ядро Linux штатных механизмов изоляции на основе пространств имён (namespaces) и групп управления (cgroups). Код Docker написан на языке Go и распространяется под лицензией Apache 2.0.
Docker 1.11 стал первым выпуском, по умолчанию перешедшим на легковесный runtime runC и управляющий инструментарий containerd (Архивная копия от 17 апреля 2021 на Wayback Machine), совместимые со спецификациями OCI ( Open Container Initiative), определяющими единый формат контейнеров и универсальный runtime для их запуска.
runC предоставляет обособленный набор компонентов для запуска контейнеров на широком спектре систем, позволяя обойтись без внешних зависимостей, так как поддержка различных технологий изоляции встраивается в runtime контейнера. Для организации работы с контейнерами runC поддерживает пространства имён Linux (namespaces), различные средства повышения безопасности Linux (SELinux, Apparmor, seccomp, cgroups, capability, pivot_root, сброс uid/gid), live-миграцию (используется CRIU), возможности создания контейнеров в Windows 10, поддержку интеграции с systemd и переносимые профили производительности (предоставлены Google).
Containerd включает фоновый процесс и клиент командной строки, использующий runC для запуска контейнеров, соответствующих спецификации OCI. Из расширенных возможностей containerd отмечается поддержка seccomp, непривилегированных контейнеров (user namespace), применение criu для клонирования и live-миграции. При одновременном запуске 1000 контейнеров containerd обеспечивает производительность запуска в 126-140 контейнеров в секунду.
Движок Docker теперь работает в качестве надстройки над containerd, что позволяет сохранить привычный для пользователей Docker интерфейс. Интеграция containerd позволила существенно упростить кодовую базу Docker и избавиться от ряда проблем. Кроме того, разделение Docker на независимые слои упростило сопровождение продукта и существенно повысило его качество. Особое внимание было уделено производительности - задействование дополнительных механизмов межпроцессного взаимодействия не только не привело к замедлению работы, но и ускорило работу благодаря распараллеливанию операций создания контейнеров.
Из других новшеств Docker 1.11 можно отметить:
- Поддержка балансировки нагрузки через распределение запросов к контейнерам в режиме "round robin" с использованием DNS;
- Экспериментальная поддержка VLAN в сетевой инфраструктуре контейнеров;
- Возможность использования аппаратных устройств Yubikey для формирования цифровых подписей для образов контейнеров;
- Поддержка привязки произвольных меток в формате ключ/значение к сетям и дисковым разделам по аналогии с привязкой меток к контейнерам и образам;
- Улучшена обработка состояния нехватки дискового пространства в хранилищах на базе device mapper;
- Выпуск инструмента Docker Compose 1.7, позволяющего организовать работу распределённого на несколько хостов приложения, в работу которого вовлечено несколько контейнеров, запущенных в кластере на базе Docker Swarm. В новой версии добавлена команда "docker-compose exec" (аналог "docker exec") и опция "--build" для команды "docker-compose up", инициирующая предварительный запуск "docker-compose build";
- Выпуск инструмента Machine 0.7, предназначенного для быстрого развёртывание хостов в гостевых окружениях систем виртуализации VirtualBox, VMware, AWS, Digital Ocean и Microsoft Azure. Осуществляет создание начинки сервера, установку на него Docker и настройку клиента для работы с данным сервером. В новой версии драйвер Microsoft Azure переведён на новый Azure API;
- Выпуск инструмента Swarm 1.2, предоставляющего средства кластеризации для упакованных в контейнеры приложений. Swarm даёт возможность управлять кластером из нескольких хостов Docker (например, созданных с использованием Docker Machine) в форме работы с одним виртуальным хостом. Так как Swarm использует штатный Docker API, он может применяться для управления и другими поддерживающими данный API инструментами, такими как dokku, fig, krane, flynn, deis, docker-ui, shipyard, drone.io, Jenkins. В новой версии стабилизирована поддержка перепланировки, обеспечивающей автоматическое перемещение контейнера на рабочий узел в случае сбоя текущего узла.
Источники[править]
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии[править]
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.