Docker как песочница
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 11.03.17 17:57
Оценка:
Как известно в .Net Core нет AppDomain.
Но можно использовать например .Net Core, AppDomain, WCF, RPC маршалинг по Tcp/Ip свой велосипед
А в качестве песочницы можно использовать терминальные сессии или виртуальные машины.

Но вот интересно можно ли в качестве песочницы использовать Docker

Docker легковесен и быстр. Он предоставляет устойчивую, рентабельную альтернативу виртуальным машинам на основе гипервизора. Он особенно полезен в условиях высоких нагрузок, например, при создания собственного облака или платформа-как-сервис (platform-as-service). Но он так же полезен для маленьких и средних приложений, когда вам хочется получать больше из имеющихся ресурсов.


Мы уже знаем, что образ — это read-only шаблон, из которого создается контейнер. Каждый образ состоит из набора уровней. Docker использует union file system для сочетания этих уровней в один образ. Union file system позволяет файлам и директориями из разных файловых систем (разным ветвям) прозрачно накладываться, создавая когерентную файловую систему.


То есть например использовать директории к Microsoft.NETCore.App и Nuget

Вот здесь пишут, что вроде можно Как правильно использовать Docker

сущность в docker-е под названием «контейнер» предназначена для запуска одного процесса внутри окружения, где, благодаря cgroups, ограничены и изолированы вычислительные ресурсы (процессорные, сетевые, ресурсы памяти, ресурсы ввода-вывода). естественно, этот процесс может «плодить» потомков (которые «видят» только это изолированное окрежение), и этим иногда пользуются для запуска нескольких несвязанных процессов.



И какова скорость выполнения по сравнению с терминальными сессиями
и солнце б утром не вставало, когда бы не было меня
Отредактировано 11.03.2017 18:19 Serginio1 . Предыдущая версия . Еще …
Отредактировано 11.03.2017 18:00 Serginio1 . Предыдущая версия .
Re: Docker как песочница
От: Sinix  
Дата: 11.03.17 18:28
Оценка: 3 (1) +2
Здравствуйте, Serginio1, Вы писали:

S>Как известно в .Net Core нет AppDomain.

S>Но можно использовать например .Net Core, AppDomain, WCF, RPC маршалинг по Tcp/Ip свой велосипед
S> А в качестве песочницы можно использовать терминальные сессии или виртуальные машины.

Утверждение из серии "В наборе нет часовой отвёртки? Можно использовать хорошо заточенную лопату". Каждой проблеме — свои решения. AppDomain-ы позволяют разместить в _одном_ процессе множество "недоверенных" модулей без побочных эффектов от совместного хостинга. Прям из коробки доступно API хоста, которое в противном случае придётся переизобретать самому.
Навскидку:
* тру-RPC style IPC (с невозможностью подрубиться с другой машины / другой сессии. Ваятели хостов этот момент очень часто забывают) с поддержкой notifications, lease, callbacks etc.
* API для assembly probing/redirection/etc
* live update (via shadow copy assemblies)
* API для per-appdomain monitoring — gc & cpu time.
* шаринг бинарного кода
* совместимость всего вышеперечисленного с любым нативным хостом вплоть до in-process hosting в ms sql

Ну и в случае, если модули действительно недоверенные, хост с аппдоменами очень легко вытащить в отдельный low integrity process, включить peverify в процесс развёртывания и пусть код пытается сбежать из курятника до посинения.

С интересом жду готового решения со всем вышеперечисленным на docker.
Re[2]: Docker как песочница
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 11.03.17 19:44
Оценка:
Здравствуйте, Sinix, Вы писали:

S>С интересом жду готового решения со всем вышеперечисленным на docker.


Ну нет сейчас полного аналога AppDomain. И, теперь не надо использовать .Net Core?

Что касается подрубиться из Сессии, то при запуске хоста через командную строку можно передавать начальный токен, по которому можно отслеживать нужную сессию. Что касается событий то их поддержка есть, насколько нужны калбеки при поддержке событий непонятно. Но и их можно подключить.

Подключаются любые сборки в директорию приложения.
Возможно все остальное и будет реализовано в следующих версиях. Но, что делать сегодня и сейчас?
и солнце б утром не вставало, когда бы не было меня
Re: Docker как песочница
От: TK Лес кывт.рф
Дата: 11.03.17 20:15
Оценка: 29 (3)
Здравствуйте, Serginio1, Вы писали:

S>Но вот интересно можно ли в качестве песочницы использовать Docker


S>

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


Один только базовый образ nanoserver это 300Mb+

S> И какова скорость выполнения по сравнению с терминальными сессиями


Примерно одинаково — что запустить hello world в windows контейнере, что сделать тоже самое но руками по rdp
Под linux — разница во времени примерно на порядок.
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re[3]: Docker как песочница
От: Sinix  
Дата: 11.03.17 20:25
Оценка:
Здравствуйте, Serginio1, Вы писали:

S> Ну нет сейчас полного аналога AppDomain. И, теперь не надо использовать .Net Core?

Вопрос из серии "в .net core нет WPF. И, теперь не надо использовать .Net Core?"

Ответ аналогичный — по обстоятельствам.
Re[3]: Docker как песочница
От: TK Лес кывт.рф
Дата: 11.03.17 20:26
Оценка:
Здравствуйте, Serginio1, Вы писали:

S>>С интересом жду готового решения со всем вышеперечисленным на docker.

S> Ну нет сейчас полного аналога AppDomain. И, теперь не надо использовать .Net Core?

Под windows? Зачем? А вдруг .net core это еще один silverlight? тот тоже был весь из себя многоплатформенный

S>Возможно все остальное и будет реализовано в следующих версиях. Но, что делать сегодня и сейчас?


Сейчас есть обычный .net — от него пока никто не отказывается.
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re[4]: Docker как песочница
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 11.03.17 21:37
Оценка:
Здравствуйте, TK, Вы писали:

TK>Здравствуйте, Serginio1, Вы писали:


S>>>С интересом жду готового решения со всем вышеперечисленным на docker.

S>> Ну нет сейчас полного аналога AppDomain. И, теперь не надо использовать .Net Core?

TK>Под windows? Зачем? А вдруг .net core это еще один silverlight? тот тоже был весь из себя многоплатформенный

Да нет. .Net Core делается прежде всего под облака. А именно с ним MS связывает надежды.
Плюс UWP, Xamarin. Плюс RuyJit более новый и совершенный это .Net Core. .Net Native по сути тоже.

S>>Возможно все остальное и будет реализовано в следующих версиях. Но, что делать сегодня и сейчас?


TK>Сейчас есть обычный .net — от него пока никто не отказывается.

Но многие используют Линукс для Asp.Net Core. Да и под Win тоже. Он быстрее и под него выходят новые шаблоны http://blog.stevensanderson.com/2016/10/04/angular2-template-for-visual-studio/
и солнце б утром не вставало, когда бы не было меня
Re[4]: Docker как песочница
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 12.03.17 07:14
Оценка:
Здравствуйте, TK, Вы писали:

TK>Здравствуйте, Serginio1, Вы писали:


S>>>С интересом жду готового решения со всем вышеперечисленным на docker.

S>> Ну нет сейчас полного аналога AppDomain. И, теперь не надо использовать .Net Core?

TK>Под windows? Зачем? А вдруг .net core это еще один silverlight? тот тоже был весь из себя многоплатформенный


По уму MS нужно делать свой кроссплатформенный браузер по аналогии с CEF. Использовать C# код по аналогии с C#/XAML for HTML5

Silverlight Migration Guide

Но в Edge они до сих пор общепользовательские плагины не прикрутили?
А VS Code это по сути браузер?
и солнце б утром не вставало, когда бы не было меня
Re[2]: Docker как песочница
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 12.03.17 07:33
Оценка:
Здравствуйте, TK, Вы писали:

TK>Один только базовый образ nanoserver это 300Mb+

Ну можно делать один процесс который будет попрождать другие процессы внутри песочницы.
Например запускать новый процесс с нужным портом и передавать его клиенту

благодаря cgroups, ограничены и изолированы вычислительные ресурсы (процессорные, сетевые, ресурсы памяти, ресурсы ввода-вывода). естественно, этот процесс может «плодить» потомков (которые «видят» только это изолированное окрежение), и этим иногда пользуются для запуска нескольких несвязанных процессов.

и солнце б утром не вставало, когда бы не было меня
Re[5]: Docker как песочница
От: Андрей Бабошин Германия http://andreybaboshin.livejournal.com/
Дата: 13.03.17 00:24
Оценка: 41 (3)
Здравствуйте, Serginio1, Вы писали:

S>Xamarin


Xamarin — это monotouch (AOT) и monodroid (JIT).

П.С. По теме топика.

Есть опыт запихивания небольших .net core сервисов в докер (на линуксе) с выставлением наружу web api.
Общение между сервисами — редис.
https://github.com/ABaboshin/exception-notifier (папки notification-processor и rest-listener), если интересно.

От дальнейших экспериментов удерживает отсутствие нормального драйвера для оракла (хотя свою обёртку делал https://github.com/ABaboshin/dotnet-core-oracle, но себе я не доверяю ).
Re[6]: Docker как песочница
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 13.03.17 09:07
Оценка: -1
Здравствуйте, Андрей Бабошин, Вы писали:

АБ>Здравствуйте, Serginio1, Вы писали:


S>>Xamarin


АБ>Xamarin — это monotouch (AOT) и monodroid (JIT).


Да, но только они переходя на NetStandard а значит и будут унифицировать и Net Native


АБ>П.С. По теме топика.


АБ>Есть опыт запихивания небольших .net core сервисов в докер (на линуксе) с выставлением наружу web api.

АБ>Общение между сервисами — редис.
АБ>https://github.com/ABaboshin/exception-notifier (папки notification-processor и rest-listener), если интересно.

АБ>От дальнейших экспериментов удерживает отсутствие нормального драйвера для оракла (хотя свою обёртку делал https://github.com/ABaboshin/dotnet-core-oracle, но себе я не доверяю ).


Огромное спасибо! Посмотрю
и солнце б утром не вставало, когда бы не было меня
Re[6]: Docker как песочница
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 13.03.17 12:15
Оценка:
Здравствуйте, Андрей Бабошин, Вы писали:

Кстати я бы SignalR прикрутил https://habrahabr.ru/post/318480/
и Task.Delay

На

TaskCompletionSource<int> WaitIsRunning = new TaskCompletionSource<int>();


То есть

var oneSecond = Task.Delay(Config.RedisOptions.PollInterval);// ожидание начинается тут в фоне




if (await Task.WhenAny(task, WaitIsRunning.Task) == task) {



При получении сигнала от сервера устанавливаем результат

WaitIsRunning.SetResult(1);




Еще раз спасибо! Интересно.
и солнце б утром не вставало, когда бы не было меня
Re[7]: Docker как песочница
От: Андрей Бабошин Германия http://andreybaboshin.livejournal.com/
Дата: 13.03.17 18:16
Оценка: 18 (1)
Здравствуйте, Serginio1, Вы писали:

S>Кстати я бы SignalR прикрутил https://habrahabr.ru/post/318480/


Зависит от задачи.

У меня цель была сделать простой (1) и устойчивый (2) внешний логгер, который уже сам отправляет сообщения куда надо (ну или игнорит их).

(1) Клиенты — источники лог-сообщений:
— обычные .net/mono приложения/веб-сервисы
— PLSQL

Тут web api как нельзя лучше, т.к. можно сделать просто POST, а в тело запихать тот же json.

(2) Приём и процессинг сообщений проходит отдельно. Случись что с smtp-сервером, можно подождать и ещё раз отправить.
Сохраняется всё в редисе, потому что так захотелось
Тут, кстати, то же без сюрпризов не обошлось. Стандартная очередь может терять сообщения (и на моих тестах она их замечательно теряла) — сделал на sorted set.
Re: Docker как песочница
От: Janus Россия  
Дата: 14.03.17 08:59
Оценка:
Здравствуйте, Serginio1, Вы писали:

S>Как известно в .Net Core нет AppDomain.

S>Но можно использовать например .Net Core, AppDomain, WCF, RPC маршалинг по Tcp/Ip свой велосипед
S> А в качестве песочницы можно использовать терминальные сессии или виртуальные машины.

S>Но вот интересно можно ли в качестве песочницы использовать Docker



сначала надо определиться с конечной целью!

На linux достаточно инструментов и без .net core. и скорее всего городить свой велосипед нет никакой необходимости.
Как вариант разработать REST на node js
... Хорошо уметь читать между строк. Это иногда
приносит большую пользу
Re[2]: Docker как песочница
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 14.03.17 09:50
Оценка:
Здравствуйте, Janus, Вы писали:

J>Здравствуйте, Serginio1, Вы писали:


S>>Как известно в .Net Core нет AppDomain.

S>>Но можно использовать например .Net Core, AppDomain, WCF, RPC маршалинг по Tcp/Ip свой велосипед
S>> А в качестве песочницы можно использовать терминальные сессии или виртуальные машины.

S>>Но вот интересно можно ли в качестве песочницы использовать Docker



J>сначала надо определиться с конечной целью!


J>На linux достаточно инструментов и без .net core. и скорее всего городить свой велосипед нет никакой необходимости.

J>Как вариант разработать REST на node js

Та по ссылке это лучше чем Rest, так как его писать не надо. Можно использовать ужк готовые сборки.
Речь идет о замене AppDomain в .Net Core
и солнце б утром не вставало, когда бы не было меня
Re[3]: Docker как песочница
От: Janus Россия  
Дата: 14.03.17 11:21
Оценка: 18 (1)
Здравствуйте, Serginio1, Вы писали:

S>Здравствуйте, Janus, Вы писали:


J>>Здравствуйте, Serginio1, Вы писали:


J>>сначала надо определиться с конечной целью!


J>>На linux достаточно инструментов и без .net core. и скорее всего городить свой велосипед нет никакой необходимости.

J>>Как вариант разработать REST на node js

S> Та по ссылке это лучше чем Rest, так как его писать не надо. Можно использовать ужк готовые сборки.

S>Речь идет о замене AppDomain в .Net Core

Не совсем понятно зачем linux ? Docker вполне неплохо живет под windows
https://hub.docker.com/r/microsoft/dotnet-framework/
... Хорошо уметь читать между строк. Это иногда
приносит большую пользу
Re[4]: Docker как песочница
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 14.03.17 16:28
Оценка:
Здравствуйте, Janus, Вы писали:


S>> Та по ссылке это лучше чем Rest, так как его писать не надо. Можно использовать ужк готовые сборки.

S>>Речь идет о замене AppDomain в .Net Core

J>Не совсем понятно зачем linux ? Docker вполне неплохо живет под windows

J>https://hub.docker.com/r/microsoft/dotnet-framework/

Меня про линукс интересует только скорость вызова. Я просил разницу между Docker и терминальные сессии.
Просто песочницу в .Net Core можно организовать через Терминальные сессии, виртуальную машину и докер.
За ссылку спасибо!
и солнце б утром не вставало, когда бы не было меня
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.