Компания DotCloud перевела (https://groups.google.com/d/msg/docker-club/0FUgE46g5jM/sMcM...) в разряд свободных инструментарий для управления изолированными Linux-контейнерами Docker (http://docker.io/). Docker дополняет инструментарий LXC более высокоуровневым API, работающим на уровне изоляции отдельных процессов. Инструментарий позволяет запускать произвольные процессы в режиме жесткой изоляции и затем переносить и клонировать изолированные контейнеры на другие серверы, не задумываясь о формировании начинки контейнера и его обслуживании. Одним из применений Docker является обеспечение автоматизации в распределённых системах.
Код Docker написан на языке Go и распространяется (https://github.com/dotcloud/docker/) под лицензией Apache 2.0. Инструментарий базируется на применении встроенных в ядро Linux штатных механизмов изоляции на основе пространств имён (namespaces) и групп управления (cgroups). Для создания контейнеров используются скрипты lxc (http://lxc.sourceforge.net/). Для экономии дискового пространства и сокращения дублирования информации контейнеры запускаются с использованием файловой системы 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.
<center><iframe width="640" height="480" src="http://www.youtube.com/embed/wW9CAH9nSLs?rel=0" frameborder="0" allowfullscreen></iframe></center>URL: https://groups.google.com/d/msg/docker-club/0FUgE46g5jM/sMcM...
Новость: http://www.opennet.me/opennews/art.shtml?num=36532
еще прикрутить живую миграцию с хоста на хост в облаке
Замечтельно
Что-то я не просёк, как сочетаются copy-on-write и самодостаточность ФС "не важно где, когда и в каком окружении".
А смысл использовать copy-on-write? Ну вот есть у нас десяток виртуалок с линуксом. Их же надо обновлять иногда. Если делать apt-get upgrade в родительской ФС, то это чревато такими глюками, что даже не знаю. Особенно если в дочерних системах были установлены свои пакеты. Если делать apt-get upgrade в каждой виртуалке, то один фиг через год все файлы перезапишутся, и от copy-on-write толку больше не будет, кроме тормозов.
> А смысл использовать copy-on-write? Ну вот есть у нас десяток виртуалок с
> линуксом. Их же надо обновлять иногда. Если делать apt-get upgrade в
> родительской ФС, то это чревато такими глюками, что даже не знаю.
> Особенно если в дочерних системах были установлены свои пакеты. Если делать
> apt-get upgrade в каждой виртуалке, то один фиг через год все
> файлы перезапишутся, и от copy-on-write толку больше не будет, кроме тормозов.какие глюки обновитца же по цепочке всё
Ну представь, в дочерней системе установлены какие-то дополнительные пакеты, а родительская система о них ничего не знает. У дочерней системы своя база база данных установленных пакетов, у родительской - своя. Что будет с базой установленных пакетов в дочерней системе после обновления пакетов в родительской системе? В aufs пока ещё не встроили ИИ, чтобы он такие конфликты разруливал магическим образом. :)
>В aufs пока ещё не встроили ИИ, чтобы он такие конфликты разруливал магическим образом. :)Для таких задач ИИ не нужен :). Вполне достаточно отследить записи в общие файлы. Если после записи файлы совпадают, то они используются совместно, если нет, то используется индивидуальная версия.
> Код Docker написан на языке Goопять херь какую-то ставить для сборки. тьфу. подожду, пока сделают на нормальном языке.
мммм, таки в самом деле brainfuck?
> мммм, таки в самом деле brainfuck?whitespace!
Это не та программа в гноме?
Секюрность повыше обычного lxc?
Оно ж LXC и использует, как я понял.