The OpenNET Project / Index page

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

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

26.11.2013 14:19

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

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

  • Поддержка работы поверх немодифицированных современных ядер Linux (без наложения патчей для поддержки AUFS) и в штатных окружениях всех крупных дистрибутивов Linux, включая Fedora, RHEL, Ubuntu, Debian, SUSE, Gentoo и Arch;
  • Поддержка использования разных систем хранения, которые могут подключаться как плагины. Среди поддерживаемых драйверов хранения заявлены aufs, device mapper (используются снапшоты LVM) и vfs (на основе копирования директорий). Также доступен экспериментальный драйвер для Btrfs, а также ожидается появление драйверов для ZFS, Gluster и Ceph;
  • Добавлена возможность создания контейнеров, содержащих сложные программные стеки, через связывание между собой уже существующих контейнеров, содержащих составные части формируемого стека. Связывание осуществляется не через слияние содержимого, а через обеспечения взаимодействия между контейнерами (создаётся сетевой туннель);
  • Возможность присвоения контейнерам произвольных запоминающихся имён для упрощения организации работы (например, "docker run -d -name mariadb user/mariadb", "docker restart mariadb");
  • Расширенные средства перенаправления портов, поддерживающие привязку к отдельным сетевым интерфейсам, маппинг в другой номер порта (например, "-p 127.0.0.1:80:8080") и запрет на выпуск во вне определённых портов;
  • Offline-режим перемещения содержимого образов в/из ФС без потери информации. Для экспортирования и импортирования содержимого образа добавлены команды "docker save" и "docker load".

Код Docker написан на языке Go и распространяется под лицензией Apache 2.0. Инструментарий базируется на применении встроенных в ядро Linux штатных механизмов изоляции на основе пространств имён (namespaces) и групп управления (cgroups). Для создания контейнеров используются скрипты lxc. Для формирования контейнера достаточно загрузить базовый образ окружения (docker pull base), после чего можно запускать в изолированных окружениях произвольные приложения (например, для запуска bash можно выполнить "docker run -i -t base /bin/bash").

Основные возможности Docker:

  • Возможность размещения в изолированном окружении разнородной начинки, включающей различие комбинации исполняемых файлов, библиотек, файлов конфигурации, скриптов, файлов jar, gem, tar и т.д.
  • Поддержка работы на любом компьютере на базе архитектуры x86_64 с системой на базе современного ядра Linux, начиная от ноутбуков, заканчивая серверами и виртуальными машинами.
  • Использование легковесных контейнеров для изоляции процессов от других процессов и основной системы.
  • Так как контейнеры используют свою собственную самодостаточную файловую систему, не важно где, когда и в каком окружении они запускаются.
  • Изоляция на уровне файловой системы: каждый процесс выполняется в полностью отдельной корневой ФС;
  • Изоляция ресурсов: потребление системных ресурсов, таких как расход памяти и нагрузка на CPU, могут ограничиваться отдельно для каждого контейнера с использованием cgroups;
  • Изоляция на уровне сети: каждый изолированный процесс имеет доступ только к связанному с контейнером сетевому пространству имён, включая виртуальный сетевой интерфейс и привязанный к нему IP-адрес;
  • Корневая файловая система для контейнеров создаётся с использованием механизма copy-on-write (отдельно сохраняются только изменённые и новые данные), что позволяет ускорить развёртывание, снижает расход памяти и экономит дисковое пространство;
  • Все стандартные потоки (stdout/stderr) каждого выполняемого в контейнере процесса накапливаются и сохраняются в виде лога;
  • Изменённая файловая система одного контейнера, может использоваться в качестве основы для формирования новых базовых образов и создания других контейнеров, без необходимости оформления шаблонов или ручной настройки состава образов;
  • Возможность использования интерактивной командной оболочки: к стандартному вводу любого контейнера может быть привязан псевдо-tty для запуска shell.


  1. Главная ссылка к новости (http://blog.docker.io/2013/11/...)
Лицензия: CC-BY
Тип: Программы
Ключевые слова: lxc, docker, virtual, container
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение (20) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, анонимм (?), 14:36, 26/11/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • –12 +/
    Редхет не осилил сканпелировать aufs и всунул в докер "поддерживаемые драйвера хранения", лучше бы в системды свою замену докеру написали, а оригинал не трогали.
     
     
  • 2.2, Аноним (-), 14:49, 26/11/2013 [^] [^^] [^^^] [ответить]  
  • +8 +/
    > Редхет

    Почему редхет, а не интел, гугл или каноникал?

    > не осилил сканпелировать aufs

    Линус запрещает любые попытки сделать overlay fs на уровнея ядра.

    > лучше бы в системды свою замену докеру написали, а оригинал не трогали.

    Вообще-то, docker изначально создавался как "свой, принципиально новый systemd, но на принципиально новом языке и без поддержки инициализации".

     
     
  • 3.6, Аноним (-), 15:20, 26/11/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > Линус запрещает любые попытки сделать overlay fs на уровнея ядра.

    И он определенно прав, судя по фееричным проблемам docker при попытке запуска поверх корня на btrfs из-за кривизны aufs.

     
  • 3.9, анонимм (?), 15:37, 26/11/2013 [^] [^^] [^^^] [ответить]  
  • –6 +/
    > Почему редхет, а не интел, гугл или каноникал?

    потому что в одной из новостей о rhel 6.5 было о нём написано

    > Линус запрещает любые попытки сделать overlay fs на уровнея ядра.

    выглядит как чушь, поскольку никто не требует докер в ядро включать

    > новом языке и без поддержки инициализации".

    отличная идея

     
     
  • 4.13, Аноним (-), 17:15, 26/11/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > потому что в одной из новостей о rhel 6.5 было о нём написано

    И что?

    > выглядит как чушь, поскольку никто не требует докер в ядро включать

    Как это отрицает завязанность докера на функционал ядра?

    > отличная идея

    Переписать с нуля что-то уже существующее - всегда отличная идея, Леннарт подтверждает.

     
     
  • 5.19, анонимм (?), 23:55, 26/11/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Как это отрицает завязанность докера на функционал ядра?

    докер лишь запускалка контейнеров, ФУНКЦИОНАЛ ты, ёпта


     
     
  • 6.24, Аноним (-), 00:44, 28/11/2013 [^] [^^] [^^^] [ответить]  
  • +/
    >> Как это отрицает завязанность докера на функционал ядра?
    > докер лишь запускалка контейнеров

    Вот-вот. И поэтому без соответствующих фич в ядре он - ноль без палочки.

     
  • 3.21, Mirraz (ok), 11:32, 27/11/2013 [^] [^^] [^^^] [ответить]  
  • +/
    >Линус запрещает любые попытки сделать overlay fs на уровня ядра.

    А можно вот об этом поподробнее? WHY?

     
     
  • 4.23, Аноним (-), 00:42, 28/11/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > А можно вот об этом поподробнее?

    Погуглите истории попыток включения UnionFS, AUFS и OverlayFS в мейнстримное ядро.

    > WHY?

    Когда Линус показывает свой средний палец, технические аргумент излишни.

     

  • 1.3, Аноним (-), 14:54, 26/11/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Skype в нём проверял кто?
     
     
  • 2.7, Аноним (-), 15:21, 26/11/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Работает, вот только вряд ли вы контейнер сможете настроить
     
     
  • 3.8, Аноним (-), 15:23, 26/11/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > вряд ли вы контейнер сможете настроить

    А что, с этим какие-то проблемы?

     
     
  • 4.11, Аноним (-), 16:32, 26/11/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Ну да, с вашими руками.
     
     
  • 5.14, Аноним (-), 17:30, 26/11/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Что не так с нашими руками?
     

  • 1.4, Аноним (-), 15:10, 26/11/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    btrfs удалите. Нету там его.
     
     
  • 2.5, Аноним (-), 15:16, 26/11/2013 [^] [^^] [^^^] [ответить]  
  • +/
    btrfs - это режим с отключенным aufs. Потому что при попытке использовать aufs (который по умолчанию юзается в докере) поверх btrfs docker падает.
     
     
  • 3.10, Аноним (-), 15:48, 26/11/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    т.е. чтобы использовать btrfs нужно чтобы /var/lib/docker был на btrfs?
     
     
  • 4.12, Аноним (-), 17:13, 26/11/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Да. И наоборот - если он будет _не_ на btrfs, на нем будет использоваться aufs.
     

  • 1.18, IvAnZ (?), 21:29, 26/11/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Народ обьясните на пальцах чем от OpenVZ отличается и что общего (кроме namespaces и cgroups)?
     
     
  • 2.22, angra (ok), 15:47, 27/11/2013 [^] [^^] [^^^] [ответить]  
  • +/
    http://openvz.livejournal.com/45647.html

    Если это "многабукав", то можно кратко одной фразой оттуда
    OpenVZ is essentially LXC++, because it adds some more stuff that are not (yet) available in the upstream kernel (such as stronger isolation, better resource accounting, plus some auxiliary ones like ploop).

     

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



    Спонсоры:
    Слёрм
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

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