Компания DotCloud перевела в разряд свободных инструментарий для управления изолированными Linux-контейнерами Docker. Docker дополняет инструментарий LXC более высокоуровневым API, работающим на уровне изоляции отдельных процессов. Инструментарий позволяет запускать произвольные процессы в режиме жесткой изоляции и затем переносить и клонировать изолированные контейнеры на другие серверы, не задумываясь о формировании начинки контейнера и его обслуживании. Одним из применений Docker является обеспечение автоматизации в распределённых системах.
Код Docker написан на языке Go и распространяется под лицензией Apache 2.0. Инструментарий базируется на применении встроенных в ядро Linux штатных механизмов изоляции на основе пространств имён (namespaces) и групп управления (cgroups). Для создания контейнеров используются скрипты lxc. Для экономии дискового пространства и сокращения дублирования информации контейнеры запускаются с использованием файловой системы AUFS, позволяющей подключить в качестве основы образ базовой ФС и сохранять изменения в отдельную область. Для формирования контейнера достаточно загрузить базовый образ окружения (docker pull base), после чего можно запускать в изолированных окружениях произвольные приложения (например, для запуска bash можно выполнить "docker run -i -t base /bin/bash").
Основные особенности Docker:
Возможность размещения в изолированном окружении разнородной начинки, включающей различие комбинации исполняемых файлов, библиотек, файлов конфигурации, скриптов, файлов jar, gem, tar и т.д.
Поддержка работы на любом компьютере на базе архитектуры x64 с системой на базе современного ядра Linux, начиная от ноутбуков, кончая серверами и виртуальными машинами.
Использование легковесных контейнеров для изоляции процессов от других процессов и основной системы.
Так как контейнеры используют свою собственную самодостаточную файловую систему, не важно где, когда и в каком окружении они запускаются.
Базовые возможности:
Изоляция на уровне файловой системы: каждый процесс выполняется в полностью отдельной корневой ФС;
Изоляция ресурсов: потребление системных ресурсов, таких как расход памяти и нагрузка на CPU, могут ограничиваться отдельно для каждого контейнера с использованием cgroups;
Изоляция на уровне сети: каждый изолированный процесс имеет доступ только к связанному с контейнером сетевому пространству имён, включая виртуальный сетевой интерфейс и привязанный к нему IP-адрес;
Корневая файловая система для контейнеров создаётся с использованием механизма copy-on-write (отдельно сохраняются только изменённые и новые данные), что позволяет ускорить развёртывание, снижает расход памяти и экономит дисковое пространство;
Все стандартные потоки (stdout/stderr) каждого выполняемого в контейнере процесса накапливаются и сохраняются в виде лога;
Изменённая файловая система одного контейнера, может использоваться в качестве основы для формирования новых базовых образов и создания других контейнеров, без необходимости оформления шаблонов или ручной настройки состава образов;
Возможность использования интерактивной командной оболочки: к стандартному вводу любого контейнера может быть привязан псевдо-tty для запуска shell.
Код Docker написан на языке Go и распространяется под лицензией Apache 2.0. Инструментарий базируется на применении встроенных в ядро Linux штатных механизмов изоляции на основе пространств имён (namespaces) и групп управления (cgroups). Для создания контейнеров используются скрипты lxc. Для экономии дискового пространства и сокращения дублирования информации контейнеры запускаются с использованием файловой системы AUFS, позволяющей подключить в качестве основы образ базовой ФС и сохранять изменения в отдельную область. Для формирования контейнера достаточно загрузить базовый образ окружения (docker pull base), после чего можно запускать в изолированных окружениях произвольные приложения (например, для запуска bash можно выполнить "docker run -i -t base /bin/bash").
Основные особенности Docker:
Возможность размещения в изолированном окружении разнородной начинки, включающей различие комбинации исполняемых файлов, библиотек, файлов конфигурации, скриптов, файлов jar, gem, tar и т.д.
Поддержка работы на любом компьютере на базе архитектуры x64 с системой на базе современного ядра Linux, начиная от ноутбуков, кончая серверами и виртуальными машинами.
Использование легковесных контейнеров для изоляции процессов от других процессов и основной системы.
Так как контейнеры используют свою собственную самодостаточную файловую систему, не важно где, когда и в каком окружении они запускаются.
Базовые возможности:
Изоляция на уровне файловой системы: каждый процесс выполняется в полностью отдельной корневой ФС;
Изоляция ресурсов: потребление системных ресурсов, таких как расход памяти и нагрузка на CPU, могут ограничиваться отдельно для каждого контейнера с использованием cgroups;
Изоляция на уровне сети: каждый изолированный процесс имеет доступ только к связанному с контейнером сетевому пространству имён, включая виртуальный сетевой интерфейс и привязанный к нему IP-адрес;
Корневая файловая система для контейнеров создаётся с использованием механизма copy-on-write (отдельно сохраняются только изменённые и новые данные), что позволяет ускорить развёртывание, снижает расход памяти и экономит дисковое пространство;
Все стандартные потоки (stdout/stderr) каждого выполняемого в контейнере процесса накапливаются и сохраняются в виде лога;
Изменённая файловая система одного контейнера, может использоваться в качестве основы для формирования новых базовых образов и создания других контейнеров, без необходимости оформления шаблонов или ручной настройки состава образов;
Возможность использования интерактивной командной оболочки: к стандартному вводу любого контейнера может быть привязан псевдо-tty для запуска shell.