The OpenNET Project / Index page

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

04.07.2017 12:17  Компания Oracle открыла код инструментария для изолированных контейнеров

Компания Oracle представила три новых открытых проекта, связанных с изолированными контейнерами: smith, crashcart и railcar. Примечательно, что первое приложение написано на языке Go, а два остальных на Rust. Код поставляется под двойной лицензией: UPL (Universal Permissive License) и Apache 2.0.

Smith позволяет собирать контейнеры в формате OCI (Open Container Image) и нацелен на сопровождение процесса сборки компактных окружений, включающих только компоненты, необходимые для работы запускаемого в контейнере приложения. Работа над Smith началась два года назад как попытка решения проблем со стабильностью и безопасностью процессов сборки контейнеров, с которыми инженеры Oracle столкнулись при построении облачных сервисов при помощи Docker.

Среди проблем, которые попытались решить разработчики Smith выделяются (проблемы были актуальны два года назад при принятии решения о создании Smith и сейчас многие из них уже решены в Docker):

  • Раздутый размер образов из-за включения большой порции лишних компонентов;
  • Недостаточное внимание вопросам обеспечения безопасности, из-за чего в Docker периодически всплывали уязвимости, позволяющие повысить свои привилегии при получении контроля за запускаемым в контейнере приложением;
  • Отсутствие контроля за версиями зависимостей и средств для определения необходимости обновления содержимого, что приводило к появлению уязвимостей из-за необновлённых вовремя компонентов;
  • Отсутствие средств для создания многослойных контейнеров, дающих возможность обойтись без полной пересборки образа при запуске новой версии приложения;
  • Отсутствие средств для запуска каждого контейнера в отдельном собственном пространстве имён идентификаторов пользователя (user namespace);
  • Отсутствие поддержки Overlayfs для запуска нескольких разных контейнеров из одного образа;
  • Отсутствие репозитория для распространения образов по узлам.

В Smith воплощена идея микроконтейнеров, как способа формирования содержимого, обеспечивающего минимальный размер, более высокую стабильность и безопасность. Микроконтейнер содержит только один исполняемый файл и связанные с ним зависимости (без shell и init-процесса), выполнятся с корневой ФС в режиме только для чтения (запись доступна только в отдельно монтируемые разделы), все файлы в контейнере принадлежат одному пользователю (не применяется разделение на группы и пользователей).

Обеспечена поддержка повторяемых сборок при которых образы, собранные в разное время над одним и тем же набором пакетов, совпадают бит в бит. В микроконтейнерах также принято соглашение о размещении всех временных файлов, таких как pid-файлы, в каталоге /run, всех логов и данных в каталоге /write, привязанных к контейнеру файлов конфигурации в каталоге /read (не изменяемый из контейнера но доступный для configmap в kubernetes или внешнего монтирования на запись).

Smith осуществляет сборку в стандартном формате OCI, который может быть загружен в репозитории Docker и запущен с его помощью. Предусмотрена как возможность сборки на базе набора rpm-пакетов и репозиториев yum, так и функция минимизации существующих oci-образов для системы Docker. В процессе сборки smith отслеживает цепочку зависимостей и автоматически включает в образ библиотеки, только действительно используемые исполняемым файлом. По сравнению с другими системами сборки контейнеров одного приложения, smith позволяет формировать контейнеры до 10 раз меньшего размера.

Инструментарий для сборки дополняют две утилиты:

  • Crashcart - позволяет по мере возникновения необходимости загружать в работающий контейнер дополнительные исполняемые файлы и библиотеки в процессе отладки микроконтейнеров и диагностики проблем, связанных отсутствием в контейнере компонентов, вызываемых в процессе работы приложения. В том числе при помощи crashcart можно запустить в контейнере /bin/bash для исполнении команды "docker exec";
  • Railcar - реализация runtime-компонентов для запуска контейнеров, определённых в спецификации oci-runtime, написанная на языке Rust и позиционируемая в качестве альтернативы containerd/runc. Язык Rust выбран так как он предоставляет возможности низкоуровневого доступа в сочетании со средствами безопасной работы с памятью, позволяющими избежать многих уязвимостей. В предлагаемом в Docker по умолчанию runtime runc, написанном на языке Go, для настройки пространств имён приходится применять обвязку на языке Си (в Go мешает сборщик мусора и отсутствие средств низкоуровневого управления потоками), которая запускается до старта основного runtime на языке Go и не использует средства безопасного программирования. Из плюсов Railcar по сравнению с runc также отмечается очень быстрый запуск контейнера (контейнер запускается за 10ms, при том, что runc только 150ms тратит на ожидание блокировок).


  1. Главная ссылка к новости (https://blogs.oracle.com/devel...)
  2. OpenNews: Google и IBM представили Istio, платформу для управления микросервисами
  3. OpenNews: Компания Canonical выпустила систему управления контейнерами LXD 2.0
  4. OpenNews: Леннарт Поттеринг представил mkosi, инструмент для генерации образов ОС
  5. OpenNews: Docker представил Moby и LinuxKit для построения произвольных систем контейнерной изоляции
  6. OpenNews: SUSE и openSUSE представили Kubic, платформу для развёртывания контейнерной инфраструктуры
Лицензия: CC-BY
Тип: Программы
Ключевые слова: oracle, container, runc, docker, smith, crashcart, railcar
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение Линейный вид | Ajax | Показать все | RSS
 
  • 1.1, Аноним, 13:07, 04/07/2017 [ответить] [смотреть все]
  • +5 +/
    Что же они два года тянули, открывать нужно было тогда Сейчас в Docker и Rkt п... весь текст скрыт [показать]
     
  • 1.2, А, 13:10, 04/07/2017 [ответить] [смотреть все]  
  • +/
    Отлично же!
     
  • 1.4, Аноним, 14:54, 04/07/2017 [ответить] [смотреть все]  
  • –1 +/
    тоже на go как и docker, интересненькая тенденция
     
     
  • 2.5, _hide_, 15:05, 04/07/2017 [^] [ответить] [смотреть все]  
  • –1 +/
    golang - это особенное нечто, но для таких задач, как алгоритмизация он идеален.
    На нем идеально было бы писать систему инициализации/конфигурирования/управления и т.п. - усложнить не получится, из средств ООП - только композиция - фиг два накосячишь.
     
     
  • 3.11, Аноним, 15:15, 05/07/2017 [^] [ответить] [смотреть все]  
  • –1 +/
    Вы сильно недооцениваете govn0codskillz особо одаренных И вообще, ЯП в первую ... весь текст скрыт [показать]
     
  • 1.6, anonymous, 15:10, 04/07/2017 [ответить] [смотреть все]  
  • +1 +/
    > всех логов и данных в каталоге /write, привязанных к контейнеру файлов конфигурации в каталоге /read

    FHS? Не, не слышали...

     
     
  • 2.8, Аноним, 15:48, 04/07/2017 [^] [ответить] [смотреть все]  
  • +11 +/
    Никогда не имели дела с Ораклом?
     
  • 2.14, нах, 19:15, 12/07/2017 [^] [ответить] [смотреть все]  
  • +1 +/
    > FHS? Не, не слышали...

    "когда коран писали - минных полей не было. Иди, Зейнаб, иди!"

     
  • 1.7, Аноним, 15:38, 04/07/2017 [ответить] [смотреть все]  
  • +1 +/
    Чё это они вдруг?
     
  • 1.9, bOOster, 20:40, 04/07/2017 [ответить] [смотреть все]  
  • +/
    Добро пожаловать в мышеловку.
     
     
  • 2.10, Аноним84701, 23:54, 04/07/2017 [^] [ответить] [смотреть все]  
  • +1 +/
    > Добро пожаловать в мышеловку.

    Угу, желательно еще и сыр с собой принести:
    https://github.com/oracle/railcar/blob/1f756b8057d04801b5fcdf0a2bff28a028186c8
    [code]
    for m in &spec.mounts {
            // TODO: check for nasty destinations involving symlinks and illegal
            //       locations.
    [/code]

     
  • 1.12, Аноним, 16:03, 05/07/2017 [ответить] [смотреть все]  
  • –1 +/
    А в чем преимущество этого перед Dockerom или Rkt, я уже молчу о комьюнити...?
     
     
  • 2.13, Anon02, 00:43, 06/07/2017 [^] [ответить] [смотреть все]  
  • +1 +/
    Анон, новость, которую ты комментишь, была написана для того чтобы ответить на твой вопрос.
    facepalm.jpg
     

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


      Закладки на сайте
      Проследить за страницей
    Created 1996-2017 by Maxim Chirkov  
    ДобавитьРекламаВебмастеруГИД  
    Hosting by Ihor