2015-06-25

Docker 1.7. Docker и CoreOS объединили усилия в разработке единого формата контейнеров

Представлен релиз инструментария для управления изолированными Linux-контейнерами Docker 1.7, предоставляющего высокоуровневый API для манипуляции контейнерами на уровне изоляции отдельных приложений. В частности, Docker позволяет, не заботясь о формировании начинки контейнера, запускать произвольные процессы в режиме изоляции и затем переносить и клонировать сформированные для данных процессов контейнеры на другие серверы, беря на себя всю работу по созданию, обслуживанию и сопровождению контейнеров. Код Docker написан на языке Go и распространяется под лицензией Apache 2.0.

Инструментарий базируется на применении встроенных в ядро Linux штатных механизмов изоляции на основе пространств имён (namespaces) и групп управления (cgroups). Для создания контейнеров предлагается использовать libcontainer (обёртка над namespaces и cgroups), также возможно применение lxc, libvirt, systemd-nspawn и других систем изоляции. Для формирования контейнера достаточно загрузить базовый образ окружения (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.




www.linuxfoundation.org/news-media/blogs/browse/2015/06/new-open-container-project-helps-define-future-data-center
www.opennet.ru

Комментариев нет:

Отправить комментарий