Первый стабильный выпуск 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;
- Возможность создания контейнеров, содержащих сложные программные стеки, через связывание между собой уже существующих контейнеров, содержащих составные части формируемого стека. Связывание осуществляется не через слияние содержимого, а через обеспечения взаимодействия между контейнерами (создаётся сетевой туннель).
Источники править
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.