Представлен релиз инструментария для управления изолированными Linux-контейнерами Docker 1.8, предоставляющего высокоуровневый 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.8 новшеств можно отметить:

  • Функциональность Docker Content Trust для проверки достоверности образа контейнера по цифровой подписи, позволяет удостовериться, что образ размещён в репозитории заявленным издателем. Для верификации используется система открытых ключей, при которой образ подписывается закрытым ключом издателя, а затем может быть проверен при помощи публично доступного открытого ключа. Для публикации, верификации и безопасного обновления образов в Docker интегрирован инструментарий Notary, основанный, в свою очередь, на фреймворке The Update Framework (TUF). Проверка осуществляется автоматически при выполнении типовых команд, таких как docker pull, docker push, docker build, docker create и docker run;
  • Представлен Docker Toolbox, cпециализированный инсталлятор для Windows и OS X, упрощающий развёртывание и запуск окружения разработчика Docker. Docker Toolbox позиционируется как замена Boot2Docker и включает клиентское ПО для Docker, компоненты Machine и Compose, а также систему виртуализации VirtualBox;
  • В разряд стабильных переведена добавленная в прошлом выпуске экспериментальная система для подключения плагинов, выполняемых в форме отдельных процессов-обрабочиков. В разряд стабильный также переведены плагины для организации хранилищ, например, позволяющие работать с сетевыми хранилищами, такими как Flocker, Blockbridge, Ceph, ClusterHQ, EMС и Portworx;
  • Система драйверов для ведения логов, позволяющих реализовать различные схемы сохранения системного журнала, в том числе передачи логов контейнера на внешний syslog-сервер, расширена возможностью передачи логов в системы Graylog и Fluentd. Добавлен драйвер для организации ротации логов на диске;
  • Команда "docker cp" теперь может применяться не только для копирования файлов из контейнера на хост-систему, но и наоборот. Например, "docker cp foo.txt mycontainer:/foo.txt";
  • Для запуска демона Docker представлена новая команда "docker daemon", которую следует использовать вместо опции "-d". Новая команда позволяет явно разделить клиентские опции (docker --help) и опции демона (docker daemon --help);
  • Возможность настройки формата вывода команды "docker ps" через указание опции "--format";
  • Поддержка настройки директории с файлами конфигурации клиента через указание пути в опции --config или переменной окружения DOCKER_CONFIG, что даёт возможность запустить разные экземпляры docker с разными наборами конфигурации;
  • Выпуск инструмента Machine 0.4, предназначенного для быстрого развёртывание хостов в гостевых окружениях систем виртуализации VirtualBox, VMware, AWS, Digital Ocean и Microsoft Azure. Осуществляет создание начинки сервера, установку на него Docker и настройку клиента для работы с данным сервером. В новой версии добавлены стредства настройки движка для использования http-прокси;
  • Выпуск инструмента Swarm 0.4, предоставляющего средства кластеризации для упакованных в контейнеры приложений. Swarm даёт возможность управлять кластером из нескольких хостов Docker (например, созданных с использованием Docker Machine) в форме работы с одним виртуальным хостом. Так как Swarm использует штатный Docker API, он может применяться для управления и другими поддерживающими данный API инструментами, такими как dokku, fig, krane, flynn, deis, docker-ui, shipyard, drone.io, Jenkins. В новой версии улучшена реализация встроенного планировщика и драйвера для интеграции с Mesos (теперь можно использовать инструменты docker для управления кластером Mesos);
  • Выпуск инструмента Docker Compose 1.4, позволяющего организовать работу распределённого на несколько хостов приложения, в работу которого вовлечено несколько контейнеров, запущенных в кластере на базе Docker Swarm. В новой версии значительно увеличена скорость запуска и остановки приложений, пересоздание контейнера производится только при необходимости, обеспечено параллельное выполнение работ. Добавлена возможность назначения произвольных имён контейнерам и поддержка чтения конфигурации из стандартного ввода (можно генерировать файл конфигурации на лету);

Дополнительно можно отметить анонс проекта Hyper (Hypervisor-agnostic Docker Engine), предоставляющего средства для запуска образов контейнеров Docker с использованием полноценных средств виртуализации, в частности, виртуальных машин Xen, KVM и VirtualBox. Hyper даёт возможность добиться более высокого уровня изоляции и безопасности, сохранив при этом такие достоинства систем контейнерной изоляции, как удобство работы, высокую скорость запуска, высокую производительность, небольшой размер контейнера и переносимость.

Для управления контейнером продолжает использоваться инструментарий docker, дополненный утилитой hyper и демоном hyperd. В каждой виртуальной машине запускается урезанное ядро Linux (HyperKernel) и сервис инициализации HyperStart, который выполняет задачу загрузки образов контейнера в виртуальной машине (в каждой виртуальной машине можно запускаться несколько контейнеров), настройки их изоляции и запуска. Кроме HyperKernel и HyperStart в виртуальной машине не запускается никаких системных компонентов. Время загрузки контейнера составляет доли секунды, потребление памяти около 28 Мб ОЗУ на виртуальную машину.



Источник: http://www.opennet.ru/opennews/art.shtml?num=42800