Выпуск cистемы управления контейнерной виртуализацией Docker 17.06

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

Docker 17.06 является первым выпуском, который построен на основе проекта Moby, реализующего идею построения систем контейнерной изоляции в виде набора связываемых между собой универсальных компонентов. Выпуск также сформирован в рамках новой нумерации версий (год.месяц) и раздельным формированием релизов Community Edition (CE) и Enterprise Edition (EE).

Другие изменения:

  • Поддержка многоступенчатой сборки (multi-stage), позволяющей формировать более компактные образы Docker, используя единый Dockerfile. Многоступенчатая сборка основана на использовании промежуточных образов, применяемых для сборки компонентов итогового образа. Например, для создания образа с Java-приложением, можно создать промежуточный образ, включающий Apache Maven и прочие инструменты, необходимые для сборки, но не требуемые для выполнения приложения. При таком разделении при размере промежуточного образа в 620 Мб, размер итогового образа составит всего 145 Мб. Число стадий не лимитировано, например, для формирования единого образа программы AtSea используется объединение результатов двух промежуточных стадий — первой на базе node.js для сборки приложения ReactJS и второй на базе Maven для компиляции приложения Spring Boot, при этом финальный образ поставляется без Maven и node.js;
  • В команде «docker build» реализован флаг »--build-arg», позволяющий установить переменные для сборки, определённые в файле Dockerfile;
  • Метрики со статистикой о работе управляющего демона теперь могут быть не только запрошены через API, но и переданы плагинам и любым внешним сервисам через обработчик »/metrics»;
  • Добавлена поддержка оформления в виде плагинов драйверов для накопления и обработки логов;
  • В разряд стабильный переведена команда «docker service logs», позволяющая упростить отладку сервисов за счёт избавления администратора от ручного сбора логов из отдельных хостов и контейнеров. При выполнении «docker service logs» логи из всех контейнеров, в которых выполняется указанный сервис, будут перенаправлены в текущую консоль;
  • Реализована возможность прикрепления сервисов к внутриузловым сетям (node-local), таким как сети с типами Host, Macvlan, IPVlan и Bridge, а также создаваемым через плагины локального действия. Например, для сети Macvlan можно создать специфичные сетевые конфигурации на рабочих узлах и затем создать общую сеть на управляющем узле, которая объединит эти конфигурации;
  • Расширены возможности режима Swarm, предоставляющего средства кластеризации для упакованных в контейнеры приложений. Swarm даёт возможность управлять кластером из нескольких хостов Docker по аналогии с работой с одним виртуальным хостом. В Docker 17.06 добавлен новый объект настройки для режима swarm, который позволяет безопасно передавать информацию о настройках. Во встроенной системе PKI (public key infrastructure) добавлена команда «docker swarm ca --rotate» для инициирования принудительной ротации ключей. В режиме swarm реализована возможность обработки событий («docker events»), позволяющих средствам мониторинга в реальном режиме времени получить информацию о сервисах, узлах и сетях.

© OpenNet