Представлен (https://blog.docker.com/2015/06/announcing-docker-1-7-multi-.../) релиз инструментария для управления изолированными Linux-контейнерами Docker 1.7 (http://www.docker.com/), предоставляющего высокоуровневый API для манипуляции контейнерами на уровне изоляции отдельных приложений. В частности, Docker позволяет, не заботясь о формировании начинки контейнера, запускать произвольные процессы в режиме изоляции и затем переносить и клонировать сформированные для данных процессов контейнеры на другие серверы, беря на себя всю работу по созданию, обслуживанию и сопровождению контейнеров. Код Docker написан на языке Go и распространяется (https://github.com/dotcloud/docker/) под лицензией Apache 2.0. Инструментарий базируется на применении встроенных в ядро Linux штатных механизмов изоляции на основе пространств имён (namespaces) и групп управления (cgroups). Для создания контейнеров предлагается использовать libcontainer (обёртка над namespaces и cgroups), также возможно применение lxc (http://lxc.sourceforge.net/), libvirt, systemd-nspawn и других систем изоляции. Для формирования контейнера достаточно загрузить базовый образ окружения (docker pull base), после чего можно запускать в изолированных окружениях произвольные приложения (например, для запуска bash можно выполнить "docker run -i -t base /bin/bash").
Из добавленных в Docker 1.7 новшеств (https://github.com/docker/docker/blob/master/CHANGELOG.md) можно отметить:
- Полностью переработан код организации сетевого взаимодействия - связанный с настройкой сети код вынесен в несколько отдельных библиотек, которые можно использовать в сторонних проектах.
- Интеграция драйвера для хранения образов в файловой системе ZFS;
- С целью повышения качества кода полностью переписана система разделов хранения;
- Проведён внутренний рефакторинг, который помог ускорить работу многих компонентов, повысил их стабильность и упростил сопровождение;
- В команду exec добавлены опции -u|--user для задания владельца нового процесса;
- Добавлена поддержка настройки квоты CPU для планировщика CFS (Completely Fair Scheduler) через опцию "--cpu-quota";
- Реализованы средства для управления приоритетом ввода/вывода, включаемые через опцию "--blkio-weight";
- Параллельно с основной версией выпущен (http://blog.docker.com/2015/06/experimental-binary/) экспериментальный вариант релиза Docker 1.7, в котором представлены изменения, требующие обсуждения перед окончательным включением в стабильную ветку. В частности, в экспериментальный релиз включены значительные изменения в организации работы сети - контейнеры теперь соединяются между собой через разные хосты. Также представлен (http://blog.docker.com/2015/06/networking-receives-an-upgrade/) новый CLI-интерфейс настройки сети, который предоставляет более гибкие возможности в организации сетевого взаимодействия.
- Вторым важным новшеством экспериментального релиза является поддержка плагинов, выполняемых в форме отдельных процессов-обрабочиков. Первыми реализованы плагины для поддержки бесшовного подключения контейнеров к различным сетевым системам и плагины для организации хранилищ, например, позволяющие работать с сетевыми хранилищами, такими как Flocker.
- Представлен (https://blog.docker.com/2015/06/runc/) runC (https://github.com/opencontainers/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).
- Выпуск (https://blog.docker.com/2015/06/compose-1-3-swarm-0-3-machin.../) инструмента Machine 0.3 (http://github.com/docker/machine), предназначенного для быстрого развёртывание хостов в гостевых окружениях систем виртуализации VirtualBox, VMware, AWS, Digital Ocean и Microsoft Azure. Осуществляет создание начинки сервера, установку на него Docker и настройку клиента для работы с данным сервером. В новой версии добавлена возможность передачи настроек демонам Engine и Swarm, реализована поддержка операционных систем Red Hat Enterprise Linux, Fedora, Debian и RancherOS, возможность импорта виртуальных машин, созданных при помощи инструментария Boot2Docker, поддержка копирования файлов между хостами, добавлен новый драйвер generic для настройки Docker на любом хосте по SSH.
- Выпуск (https://blog.docker.com/2015/06/compose-1-3-swarm-0-3-machin.../) инструмента Swarm 0.3 (https://github.com/docker/swarm/), предоставляющего средства кластеризации для упакованных в контейнеры приложений. 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), значительное повышение стабильности.
- Выпуск (https://blog.docker.com/2015/06/compose-1-3-swarm-0-3-machin.../) инструмента Docker Compose 1.3 (https://github.com/docker/docker/issues/9459), позволяющего организовать работу распределённого на несколько хостов приложения, в работу которого вовлечено несколько контейнеров, запущенных в кластере на базе Docker Swarm. В новой версии добавлена возможность пересоздания только изменённых контейнеров (--x-smart-recreate), добавлена поддержка определения меток для привязки сервисов, в файл конфигурации docker-compose.yml добавлены новые опции dockerfile, labels, extra_hosts, pid, cpuset, read_only, security_opt и log_driver.
Одновременно (https://coreos.com/blog/app-container-and-the-open-container.../) сообщается (http://www.linuxfoundation.org/news-media/blogs/browse/2015/...) о формировании (https://blog.docker.com/2015/06/open-container-project-found.../) под эгидой организации Linux Foundation группы Open Container Project, которая займётся продвижением единого формата контейнеров, который будет поддерживаться различными инструментариями, а также развитием универсального runtime для запуска контейнеров, формируемого на основе libcontainer. В итоге пользователи получат возможность упаковывать свои приложения в универсальные контейнеры, которые будут работать с любым инструментарием, включая Docker, rkt, Kurma и Jetpack.
Создаваемый стандарт будет разработан сообща и изначально не будет привязан к решениям отдельных вендоров, а также будет учитывать повышенные требования к безопасности. В состав группы в том числе вошли давние конкуренты - Docker и CoreOS, ранее пытавшиеся продвигать собственные форматы контейнеров, но теперь решившие объединить свои усилия. В частности, проект CoreOS продвигал на позицию стандарта спецификациею App Container (https://github.com/coreos/rocket/blob/master/app-container/S...), нацеленную на создание универсального переносимого формата контейнеров и поддержанну...
URL: http://www.linuxfoundation.org/news-media/blogs/browse/2015/...
Новость: http://www.opennet.me/opennews/art.shtml?num=42485