The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Новая версия системы управления контейнерной виртуализацией Docker 0.8

06.02.2014 21:41

Увидел свет выпуск инструментария для управления изолированными Linux-контейнерами Docker 0.8. Docker дополняет инструментарий LXC более высокоуровневым API, позволяющий манипулировать контейнерами на уровне изоляции отдельных процессов. В частности, Docker позволяет не заботясь о формировании начинки контейнера запускать произвольные процессы в режиме изоляции и затем переносить и клонировать сформированные для данных процессов контейнеры на другие серверы, беря на себя всю работу по созданию, обслуживанию и сопровождению контейнеров.

Код Docker написан на языке Go и распространяется под лицензией Apache 2.0. Инструментарий базируется на применении встроенных в ядро Linux штатных механизмов изоляции на основе пространств имён (namespaces) и групп управления (cgroups). Для создания контейнеров используются скрипты lxc. Для формирования контейнера достаточно загрузить базовый образ окружения (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 - оперативные корректирующие выпуски.

Особенности выпуска Docker 0.8:

  • Официальная поддержка платформы OS X;
  • Включение в состав экспериментального драйвера для организации хранилища поверх файловой системы Btrfs в режиме copy-on-write. По умолчанию поддержка Btrfs отключена, для активации следует запустить демон docker с опциями "-d -s btrfs";
  • Проведены разноплановые оптимизации производительности: Существенно ускорена сборка образов из исходных текстов с использованием команды "build", а также процесс удаления контейнеров и образов. Сокращено время запуска и остановки демона. Для инструкции ADD реализована поддержка кэширования, что позволило предотвратить выполнение повторной загрузки исходного контента в ситуациях, кода он не менялся с момента прошлой загрузки;
  • Сокращено потребление памяти при выполнении большого числа типовых операций за счёт потоковой обработки файлов без их предварительного кэширования в памяти. Устранена серия утечек памяти;
  • Увеличена стабильность работы под нагрузкой. Устранено несколько проблем, вызванных условиями гонки (race conditions);
  • Многие компоненты выделены в субпакеты меньшего размера, каждый из которых снабжен собственным тестовым набором. В результате удалось улучшить тестирование кода, повысить надёжность и упростить внесение изменений;
  • Добавлена новая инструкция 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;
  • Возможность создания контейнеров, содержащих сложные программные стеки, через связывание между собой уже существующих контейнеров, содержащих составные части формируемого стека. Связывание осуществляется не через слияние содержимого, а через обеспечения взаимодействия между контейнерами (создаётся сетевой туннель).


  1. Главная ссылка к новости (http://blog.docker.io/2014/02/...)
  2. OpenNews: На развитие системы управления контейнерной виртуализацией Docker выделено 15 млн долларов
  3. OpenNews: Новая версия системы управления контейнерной виртуализацией Docker 0.7.0
  4. OpenNews: Открыт код Docker, системы запуска приложений в изолированных контейнерах
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/39030-lxc
Ключевые слова: lxc, docker, virtual, container
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (16) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (-), 22:56, 06/02/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Слишком тормозной. Наверное из-за GO.
     
     
  • 2.2, G.NercY.uR (?), 23:10, 06/02/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Ну так то го ведь гуглово детище. А гугл вроде не сторонник плохого и тормозного кода.
     
     
  • 3.3, Аноним (-), 23:20, 06/02/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Иногда качеством и быстротой выполнения кода нужно пожертвовать ради быстроты разработки.
     
     
  • 4.5, ананим (?), 23:36, 06/02/2014 [^] [^^] [^^^] [ответить]  
  • –1 +/
    А иногда нет.
     
  • 3.6, Аноним (-), 23:58, 06/02/2014 [^] [^^] [^^^] [ответить]  
  • +10 +/
    >А гугл вроде не сторонник плохого и тормозного кода.

    Это ты про корпорацию создавшую Андроид?

     
     
  • 4.8, Аноним (-), 02:24, 07/02/2014 [^] [^^] [^^^] [ответить]  
  • +/
    > Это ты про корпорацию создавшую Андроид?

    В данном случае код и должен быть тормозным. Производители железок тоже кушать хотят.

     
  • 4.11, Аноним (-), 11:42, 07/02/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Google не создавал Android а выкупил у одной компании.
     
     
  • 5.12, Аноним 2.0 (?), 13:12, 07/02/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Без ноты недоверия. Просто интересно. А у кого купили?
     
     
  • 6.13, Andrey Mitrofanov (?), 13:23, 07/02/2014 [^] [^^] [^^^] [ответить]  
  • +/
    > Без ноты недоверия. Просто интересно. А у кого купили?

    ""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)

     
  • 5.18, Аноним (-), 15:53, 07/02/2014 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Google не создавал Android а выкупил у одной компании.

    Если бы не любил кривой и тормозной код - не купил бы.

     
     
  • 6.26, Аноним (-), 22:33, 07/02/2014 [^] [^^] [^^^] [ответить]  
  • +/
    А какие у них были варианты? Компаний типа АндроидКо с некривым и нетормозным кодом на рынке не было.
     
  • 2.14, Аноним (-), 14:47, 07/02/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Наверное, менее тормозной потому, что Go компилируется в машинный код, в отличие от того, на чём написан Android.
     

  • 1.4, Аноним (-), 23:21, 06/02/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    > Возможность работы поверх немодифицированных современных ядер Linux (без наложения патчей)

    Значит, изоляция UID NS там на уровне ванильного ядра, т.е. "только от честных людей".

     
  • 1.27, некто (ok), 22:47, 07/02/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    уважаемые, не подскажете ли на докере можно gui запускать (уже)?

    например стартануть парочку лис у себя или там дельфинов, со libreoffice или контейнеры только для консольных приложений?

     
     
  • 2.28, Фтщтшь (?), 17:12, 10/02/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Чисто теоретически для этого нет никаких преград.
    Ну, и на практике уже было реализовано: http://blog.docker.io/2013/07/docker-desktop-your-desktop-over-ssh-running-in
     
     
  • 3.29, некто (ok), 18:20, 10/02/2014 [^] [^^] [^^^] [ответить]  
  • +/
    благодарю, занятно

    подумалось - ведь реализуемо так: действительно по ssh подрубаемся к виртуалке, поднимаем vnc-терминал...

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру