Выпуск cистемы управления контейнерной виртуализацией Docker 1.3
17 октября 2014 года
Представлен релиз инструментария для управления изолированными Linux-контейнерами Docker 1.3, предоставляющего высокоуровневый 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").
Из добавленных в Docker 1.3 новшеств можно отметить:
- Новая команда "docker exec", позволяющая запустить произвольный процесс в уже существующем активном контейнере. При помощи данной команды можно добиться выполнения таких вещей, как добавление или удаление устройств из запущенных контейнеров, отладка работающих контейнеров и выполнение команд, которые не являются частью спецификации контейнера. Например, для запуска bash в контейнере ubuntu_bash можно выполнить команду "docker exec ubuntu_bash -it bash". Ранее для выполнения подобных команд приходилось запускать в контейнере sshd, что создавало лишние угрозы безопасности.
- Новая команда "docker create", позволяющая настроить контейнер без его непосредственного запуска. Ранее предлагаемая команда "docker run" кроме создания контейнера осуществляла сразу и запуск процессов в нём. Использование "docker create" даёт возможность расширить средства управления жизненным циклом контейнера и реализовать до запуска контейнера такие действия, как настройка дисковых разделов или маппинг портов. Например, можно быстро подготовить новые контейнеры при возникновении непредвиденного всплеска нагрузки.
- Для гарантирования целостности и подтверждения источников официальных образов контейнеров теперь поддерживается проверка по цифровой подписи. Подписанные контейнеры отмечены в каталоге Docker Hub голубой лентой. Проверка корректности подписи осуществляется автоматически, если замечено использование некорректной подписи Docker Engine продолжит использование прошлого образа.
- Добавлена новая опция "--security-opt", позволяющая использовать метки и профили SELinux и AppArmor, что даёт возможность обойтись без перехода в привилегированный режим ("docker run --privileged") на ядрах Linux с поддержкой SELinux или AppArmor. Например, для применения политики svirt_apach к контейнеру можно выполнить "docker run --security-opt label:type:svirt_apache -i -t centos \\ bash";
- Для отличных от Linux систем, таких как OS X, в состав включен минималистичный Linux-дистрибутив boot2docker, специально подготовленный для запуска контейнеров Docker. Упрощены средства для проброса в контейнеры содержимого пользовательских директорий OS X.
Дополнительно можно отметить инициативу по использованию Doсker для организации универсальной системы распространения приложений, позволяющей организовать поставку программ в форме, не привязанной к конкретным дистрибутивам Linux. Проект позиционируется как подход, альтернативный предложению от разработчиков systemd. Следует отметить, что средства для упаковки десктоп-приложений в Docker-контейнеры уже несколько месяцев развиваются совместными усилиями компаний Red Hat и Docker.
Также можно упомянуть объявление о партнёрстве Docker Inc с компанией Microsoft в плане продвижения технологий Docker для платформы Windows, интеграции Docker Hub с каталогом Microsoft Azure и разработки варианта Docker Engine для Windows Server, который планируется интегрировать в следующий выпуск Windows Server.
Основные возможности 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;
- Возможность создания контейнеров, содержащих сложные программные стеки, через связывание между собой уже существующих контейнеров, содержащих составные части формируемого стека. Связывание осуществляется не через слияние содержимого, а через обеспечения взаимодействия между контейнерами (создаётся сетевой туннель).
Источники[править]
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии[править]
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.