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

9 июня 2014 года

Анонсирован первый стабильный релиз инструментария для управления изолированными Linux-контейнерами Docker 1.0, который признан готовым для создания промышленных решений. C первого тестового выпуска Docker, представленного в марте прошлого года, внесено 8741 изменений, к разработке подключилось 460 участников, создано более 14 тысяч профилей изоляции приложений. За прошедшие 15 месяцев проект достиг зрелости, набрал необходимый уровень возможностей, обеспечил соблюдение обратной совместимости, стабилизировал API и подготовил ряд сервисов для сопровождения решений на основе Docker.

Одновременно представлена новая открытая платформа для распространения приложений. Таким образом, Docker теперь выступает в роли платформы, в состав которой входят: движок Docker Engine, runtime для контейнеров, инструментарий для создания пакетов, API и облачный сервис Docker Hub. Кроме того, введены в строй официальные репозитории приложений, из которых можно загрузить готовые образы окружений для запуска популярных приложений, таких как MongoDB, MySQL, Nginx, Redis и WordPress.

Docker Hub представляет собой облачный сервис для организации совместной работы, автоматизации рабочего процесса, создания, распространения и запуска адаптированных для Docker приложений. По сути Docker Hub предоставляет набор сервисов, таких как распространение образа контейнера, управление изменениями, организация взаимодействия между пользователями и разработчиками, сопровождение жизненного цикла, интеграция со сторонними службами. Модель монетизации сервиса Docker Hub аналогична GitHub - работа в над публичными проектами бесплатна, а плата берётся только при необходимости использования приватных репозиториев.

Основные компоненты Docker Hub:

  • Интегрированная консоль для управления пользователями, группами, контейнерами, репозиториями и рабочими процессами;
  • Реестр, предоставляющий боле 14 тысяч изолированных приложений, которые можно использовать в качестве кирпичиков для создания собственных приложений;
  • Инструменты для совместной работы, позволяющие пользователям обмениваться своими приложениями через публичные и приватные репозитории, и приглашать других людей поучаствовать в разработке.
  • Автоматизированный сборочный сервис, позволяющий обеспечить автоматическую пересборку и обновлений приложений для поддержания образов в актуальном виде. Можно организовать обновление образа после появления изменений кода приложения в GitHub или Bitbucket.
  • Сервис Webhooks, позволяющий пользователю обеспечить управление из сторонних систем и автоматизировать выполнение типовых работ через RESTful API;
  • Docker Hub API, включающий сервис аутентификации и средства интеграции с внешними службами.

Docker предоставляет высокоуровневый 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").

По функциональности выпуск 1.0 полностью аналогичен версии 0.12, выпущенной два дня назад. По сравнению в версией 0.11 добавлен драйвер хранения для ФС XFS, обеспечена поддержка директивы "COPY" для копирования файла внутрь контейнера без разархивирования, реализованы команды "pause" и "unpause" для приостановки и возобновления работы контейнера при помощи cgroup freezer, при выполнении директивы "ADD" обеспечено наследование прав доступа к файлам, улучшены средства ограничения доступа к устройствам и задействованы capabilities в Linux. Организация IANA официально закрепила за Docker сетевой порт 2375 для доступа к API через HTTP и 2376 для доступа через HTTPS.

Основные возможности Docker:

  • Возможность размещения в изолированном окружении разнородной начинки, включающей различие комбинации исполняемых файлов, библиотек, файлов конфигурации, скриптов, файлов jar, gem, tar и т.д.
  • Поддержка работы на любом компьютере на базе архитектуры x86_64 с системой на базе современного ядра Linux, начиная от ноутбуков, заканчивая серверами и виртуальными машинами. Возможность работы поверх немодифицированных современных ядер Linux (без наложения патчей) и в штатных окружениях всех крупных дистрибутивов Linux, включая Fedora, RHEL, Ubuntu, Debian, SUSE, Gentoo и Arch;
  • Использование легковесных контейнеров для изоляции процессов от других процессов и основной системы.
  • Так как контейнеры используют свою собственную самодостаточную файловую систему, не важно где, когда и в каком окружении они запускаются.
  • Изоляция на уровне файловой системы: каждый процесс выполняется в полностью отдельной корневой ФС;
  • Изоляция ресурсов: потребление системных ресурсов, таких как расход памяти и нагрузка на CPU, могут ограничиваться отдельно для каждого контейнера с использованием cgroups;
  • Изоляция на уровне сети: каждый изолированный процесс имеет доступ только к связанному с контейнером сетевому пространству имён, включая виртуальный сетевой интерфейс и привязанный к нему IP-адрес;
  • Корневая файловая система для контейнеров создаётся с использованием механизма copy-on-write (отдельно сохраняются только изменённые и новые данные), что позволяет ускорить развёртывание, снижает расход памяти и экономит дисковое пространство;
  • Все стандартные потоки (stdout/stderr) каждого выполняемого в контейнере процесса накапливаются и сохраняются в виде лога;
  • Изменённая файловая система одного контейнера может использоваться в качестве основы для формирования новых базовых образов и создания других контейнеров, без необходимости оформления шаблонов или ручной настройки состава образов;
  • Возможность использования интерактивной командной оболочки: к стандартному вводу любого контейнера может быть привязан псевдо-tty для запуска shell.
  • Поддержка использования разных систем хранения, которые могут подключаться как плагины. Среди поддерживаемых драйверов хранения заявлены aufs, device mapper (используются снапшоты LVM), vfs (на основе копирования директорий) и Btrfs. Ожидается появление драйверов для ZFS, Gluster и Ceph;
  • Возможность создания контейнеров, содержащих сложные программные стеки, через связывание между собой уже существующих контейнеров, содержащих составные части формируемого стека. Связывание осуществляется не через слияние содержимого, а через обеспечения взаимодействия между контейнерами (создаётся сетевой туннель).

Источники править


 
 
Creative Commons
Эта статья содержит материалы из статьи «Первый стабильный выпуск cистемы управления контейнерной виртуализацией Docker», опубликованной OpenNET и распространяющейся на условиях лицензии Creative Commons Attribution (CC BY) — указание автора, источник и лицензию.
 
Эта статья загружена автоматически ботом NewsBots в архив и ещё не проверялась редакторами Викиновостей.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.

Комментарии

Викиновости и Wikimedia Foundation не несут ответственности за любые материалы и точки зрения, находящиеся на странице и в разделе комментариев.