Увидел свет (http://blog.docker.io/2014/02/docker-0-8-quality-new-builder.../) выпуск инструментария для управления изолированными Linux-контейнерами Docker 0.8 (http://www.docker.io/). Docker дополняет инструментарий LXC более высокоуровневым API, позволяющий манипулировать контейнерами на уровне изоляции отдельных процессов. В частности, Docker позволяет не заботясь о формировании начинки контейнера запускать произвольные процессы в режиме изоляции и затем переносить и клонировать сформированные для данных процессов контейнеры на другие серверы, беря на себя всю работу по созданию, обслуживанию и сопровождению контейнеров.
Код Docker написан на языке Go и распространяется (https://github.com/dotcloud/docker/) под лицензией Apache 2.0. Инструментарий базируется на применении встроенных в ядро Linux штатных механизмов изоляции на основе пространств имён (namespaces) и групп управления (cgroups). Для создания контейнеров используются скрипты lxc (http://lxc.sourceforge.net/). Для формирования контейнера достаточно загрузить базовый образ окружения (docker pull base), после чего можно запускать в изолированных окружениях произвольные приложения (например, для запуска bash можно выполнить "docker run -i -t base /bin/bash").
Сообщается, что Docker 0.8 является первым выпуском, при подготовке которого основное внимание уделялось не расширению функциональности, а повышению стабильности и увеличению качества. Также отмечается переход на новую модель формирования новых выпусков. Релизы Docker теперь будут формироваться каждый месяц, что позволит более плавно вводить новые новшества и более интенсивно их тестировать. Находящийся в разработке Master-репозиторий всегда будет находиться в рабочем состоянии, все принимаемые в него патчи будут соответствовать критериям готовности для выпуска. Т.е. любая сборка из Master-репозитория будет заведомо рабочей и соответствовать статусу кандидата в релизы. Выпуски Docker будут иметь привычную для большинства открытых проектов нумерацию: x.y.z: x - версии со значительными изменениями (например, выпуск 1.0 будет отражать готовность к промышленному применению), y - ежемесячные промежуточные выпуски, z - оперативные корректирующие выпуски.Особенности (https://github.com/dotcloud/docker/blob/release/CHANGELOG.md) выпуска Docker 0.8:
- Официальная поддержка платформы OS X;
- Включение в состав экспериментального драйвера для организации хранилища поверх файловой системы Btrfs в режиме copy-on-write. По умолчанию поддержка Btrfs отключена, для активации следует запустить демон docker с опциями "-d -s btrfs";
- Проведены разноплановые оптимизации производительности: Существенно ускорена сборка образов из исходных текстов с использованием команды "build", а также процесс удаления контейнеров и образов. Сокращено время запуска и остановки демона. Для инструкции ADD реализована поддержка кэширования, что позволило предотвратить выполнение повторной загрузки исходного контента в ситуациях, кода он не менялся с момента прошлой загрузки;- Сокращено потребление памяти при выполнении большого числа типовых операций за счёт потоковой обработки файлов без их предварительного кэширования в памяти. Устранена серия утечек памяти;
- Увеличена стабильность работы под нагрузкой. Устранено несколько проблем, вызванных условиями гонки (race conditions);- Многие компоненты выделены в субпакеты меньшего размера, каждый из которых снабжен собственным тестовым набором. В результате удалось улучшить тестирование кода, повысить надёжность и упростить внесение изменений;
- Добавлена новая инструкция ONBUILD (http://docs.docker.io/en/latest/reference/builder/#onbuild), позволяющая привязать к образу обработчик (trigger), вызываемый в момент использования образа в качестве образца для создания других образов;
- Реализована возможность создания, удаления и изменения большего числа контейнеров и образов за счёт более агрессивного освобождения системных ресурсов;
- Во всех операциях с пакетами теперь применяется встроенная реализация tar, написанная на языке Go, что позволяет увеличить переносимость и решает проблемы с несовместимостью разных видов утилиты tar;
- Поддержка запуска управляющего демона через сервис активации по сокету в systemd.
Основные возможности 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;
- Возможность создания контейнеров, содержащих сложные программные стеки, через связывание между собой уже существующих контейнеров, содержащих составные части формируемого стека. Связывание осуществляется не через слияние содержимого, а через обеспечения взаимодействия между контейнерами (создаётся сетевой туннель).URL: http://blog.docker.io/2014/02/docker-0-8-quality-new-builder.../
Новость: http://www.opennet.me/opennews/art.shtml?num=39030
Слишком тормозной. Наверное из-за GO.
Ну так то го ведь гуглово детище. А гугл вроде не сторонник плохого и тормозного кода.
Иногда качеством и быстротой выполнения кода нужно пожертвовать ради быстроты разработки.
А иногда нет.
>А гугл вроде не сторонник плохого и тормозного кода.Это ты про корпорацию создавшую Андроид?
> Это ты про корпорацию создавшую Андроид?В данном случае код и должен быть тормозным. Производители железок тоже кушать хотят.
Google не создавал Android а выкупил у одной компании.
Без ноты недоверия. Просто интересно. А у кого купили?
> Без ноты недоверия. Просто интересно. А у кого купили?""Initially developed by Android, Inc., which Google backed financially and later bought in 2005,[13] Android was unveiled in 2007 [...]
en.wikipedia.org/wiki/Android_(operating_system)
> Google не создавал Android а выкупил у одной компании.Если бы не любил кривой и тормозной код - не купил бы.
А какие у них были варианты? Компаний типа АндроидКо с некривым и нетормозным кодом на рынке не было.
Наверное, менее тормозной потому, что Go компилируется в машинный код, в отличие от того, на чём написан Android.
> Возможность работы поверх немодифицированных современных ядер Linux (без наложения патчей)Значит, изоляция UID NS там на уровне ванильного ядра, т.е. "только от честных людей".
уважаемые, не подскажете ли на докере можно gui запускать (уже)?например стартануть парочку лис у себя или там дельфинов, со libreoffice или контейнеры только для консольных приложений?
Чисто теоретически для этого нет никаких преград.
Ну, и на практике уже было реализовано: http://blog.docker.io/2013/07/docker-desktop-your-desktop-ov...
благодарю, занятноподумалось - ведь реализуемо так: действительно по ssh подрубаемся к виртуалке, поднимаем vnc-терминал...