The OpenNET Project / Index page

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



"Компания Oracle открыла код инструментария для изолированных..."
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Компания Oracle открыла код инструментария для изолированных..."  +/
Сообщение от opennews (??) on 04-Июл-17, 13:07 
Компания Oracle представила (https://blogs.oracle.com/developers/three-new-open-source-co...) три новых открытых проекта, связанных с изолированными контейнерами: smith (https://github.com/oracle/smith), crashcart (https://github.com/oracle/crashcart) и railcar (https://github.com/oracle/railcar). Примечательно, что первое приложение написано на языке Go, а два остальных на Rust.  Код поставляется под двойной лицензией: UPL (https://opensource.org/licenses/UPL) (Universal Permissive License) и Apache 2.0.


Smith (https://blogs.oracle.com/developers/the-microcontainer-manif...) позволяет собирать  контейнеры в формате OCI (Open Container Image (https://github.com/opencontainers/image-spec)) и нацелен на сопровождение процесса сборки компактных окружений, включающих только компоненты, необходимые для работы запускаемого в контейнере приложения. Работа над Smith началась два года назад как попытка решения проблем со стабильностью и безопасностью процессов сборки контейнеров, с которыми инженеры Oracle  столкнулись при построении облачных сервисов при помощи Docker.


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


-  Раздутый размер образов из-за включения  большой порции лишних компонентов;
-  Недостаточное внимание вопросам обеспечения безопасности, из-за чего в Docker периодически всплывали (https://www.opennet.me/opennews/art.shtml?num=40046) уязвимости (https://www.opennet.me/opennews/art.shtml?num=41124),  позволяющие (https://www.opennet.me/opennews/art.shtml?num=42195) повысить (https://www.opennet.me/opennews/art.shtml?num=45848) свои привилегии при получении контроля за запускаемым в контейнере приложением;
-  Отсутствие контроля за версиями зависимостей и средств для определения необходимости обновления содержимого, что приводило к появлению (https://www.opennet.me/opennews/art.shtml?num=42322) уязвимостей из-за необновлённых вовремя компонентов;
-  Отсутствие средств для создания многослойных контейнеров, дающих возможность обойтись без полной пересборки образа при запуске новой версии приложения;
-  Отсутствие средств для запуска каждого контейнера в отдельном собственном пространстве имён идентификаторов пользователя (user namespace);
-  Отсутствие поддержки Overlayfs для запуска нескольких разных контейнеров из одного образа;
-  Отсутствие репозитория для распространения образов по узлам.


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

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


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


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


-  Crashcart (https://blogs.oracle.com/developers/hardcore-container-debug...) -  позволяет по мере возникновения необходимости загружать в работающий контейнер дополнительные исполняемые файлы и библиотеки в процессе отладки микроконтейнеров и диагностики проблем, связанных отсутствием в контейнере компонентов, вызываемых в процессе работы приложения. В том числе при помощи crashcart можно запустить в контейнере /bin/bash для исполнении команды "docker exec";

-  Railcar (https://blogs.oracle.com/developers/building-a-container-run...) - реализация runtime-компонентов для запуска контейнеров, определённых в спецификации oci-runtime (https://github.com/opencontainers/runtime-spec), написанная на языке Rust и позиционируемая в качестве альтернативы containerd/runc. Язык Rust выбран так как он предоставляет возможности низкоуровневого доступа в сочетании со средствами безопасной работы с памятью, позволяющими избежать многих уязвимостей. В предлагаемом в Docker по умолчанию runtime runc, написанном на языке Go, для настройки пространств имён приходится (https://www.weave.works/blog/linux-namespaces-and-go-don-t-mix) применять обвязку на языке Си (в Go мешает сборщик мусора и отсутствие средств низкоуровневого управления потоками), которая запускается до старта основного runtime на языке Go и не использует средства безопасного программирования. Из плюсов Railcar по сравнению с runc также отмечается очень быстрый запуск контейнера (контейнер запускается за 10ms, при том, что runc только 150ms тратит на ожидание блокировок).

URL: https://blogs.oracle.com/developers/three-new-open-source-co...
Новость: http://www.opennet.me/opennews/art.shtml?num=46805

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Компания Oracle открыла код инструментария для изолированных..."  +5 +/
Сообщение от Аноним (??) on 04-Июл-17, 13:07 
Что же  они два года тянули, открывать нужно было тогда. Сейчас в Docker и Rkt почти все из отмеченных проблем решены.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Компания Oracle открыла код инструментария для изолированных..."  +/
Сообщение от А (??) on 04-Июл-17, 13:10 
Отлично же!
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

4. "Компания Oracle открыла код инструментария для изолированных..."  –1 +/
Сообщение от Аноним (??) on 04-Июл-17, 14:54 
тоже на go как и docker, интересненькая тенденция
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

5. "Компания Oracle открыла код инструментария для изолированных..."  –1 +/
Сообщение от _hide_ (ok) on 04-Июл-17, 15:05 
golang - это особенное нечто, но для таких задач, как алгоритмизация он идеален.
На нем идеально было бы писать систему инициализации/конфигурирования/управления и т.п. - усложнить не получится, из средств ООП - только композиция - фиг два накосячишь.
Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

11. "Компания Oracle открыла код инструментария для изолированных..."  –1 +/
Сообщение от Аноним (??) on 05-Июл-17, 15:15 
> На нем идеально было бы писать систему инициализации/конфигурирования/управления и т.п.
> - усложнить не получится, из средств ООП - только композиция - фиг два накосячишь.

Вы сильно недооцениваете govn0codskillz особо одаренных.
И вообще, ЯП в первую очередь только инструмент -- оборудованная по последнему слову мастерская не исправит отсутствие знаний и кривизну рук, тогда как хороший специалист с помощью такой-то матери и кувалды все еще сможет творить чудеса.

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

6. "Компания Oracle открыла код инструментария для изолированных..."  +1 +/
Сообщение от anonymous (??) on 04-Июл-17, 15:10 
> всех логов и данных в каталоге /write, привязанных к контейнеру файлов конфигурации в каталоге /read

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

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

8. "Компания Oracle открыла код инструментария для изолированных..."  +11 +/
Сообщение от Аноним (??) on 04-Июл-17, 15:48 
Никогда не имели дела с Ораклом?
Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

14. "Компания Oracle открыла код инструментария для изолированных..."  +1 +/
Сообщение от нах on 12-Июл-17, 19:15 
> FHS? Не, не слышали...

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

Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

7. "Компания Oracle открыла код инструментария для изолированных..."  +1 +/
Сообщение от Аноним (??) on 04-Июл-17, 15:38 
Чё это они вдруг?
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

9. "Компания Oracle открыла код инструментария для изолированных..."  +/
Сообщение от bOOster (ok) on 04-Июл-17, 20:40 
Добро пожаловать в мышеловку.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

10. "Компания Oracle открыла код инструментария для изолированных..."  +1 +/
Сообщение от Аноним84701 (ok) on 04-Июл-17, 23:54 
> Добро пожаловать в мышеловку.

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


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

Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

12. "Компания Oracle открыла код инструментария для изолированных..."  –1 +/
Сообщение от Аноним email(??) on 05-Июл-17, 16:03 
А в чем преимущество этого перед Dockerom или Rkt, я уже молчу о комьюнити...?
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

13. "Компания Oracle открыла код инструментария для изолированных..."  +1 +/
Сообщение от Anon02 on 06-Июл-17, 00:43 
Анон, новость, которую ты комментишь, была написана для того чтобы ответить на твой вопрос.
facepalm.jpg
Ответить | Правка | ^ к родителю #12 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




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

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