The OpenNET Project / Index page

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

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

04.07.2017 12:17

Компания 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 3.0
Короткая ссылка: https://opennet.ru/46805-oracle
Ключевые слова: oracle, container, runc, docker, smith, crashcart, railcar
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (13) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | 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_ (ok), 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 (ok), 20:40, 04/07/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Добро пожаловать в мышеловку.
     
     
  • 2.10, Аноним84701 (ok), 23:54, 04/07/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Добро пожаловать в мышеловку.

    Угу, желательно еще и сыр с собой принести:
    https://github.com/oracle/railcar/blob/1f756b8057d04801b5fcdf0a2bff28a028186c8



    for m in &spec.mounts {
            // TODO: check for nasty destinations involving symlinks and illegal
            //       locations.



     

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

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



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

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