Компания Docker представила два новых проекта Moby (https://blog.docker.com/2017/04/introducing-the-moby-project/) и LinuxKit (https://blog.docker.com/2017/04/introducing-linuxkit-contain.../), предоставляющих инструменты для создания произвольных систем контейнерной изоляции. Moby позволяет комбинировать готовые компоненты и фреймворки для создания систем на базе контейнеров, а LinuxKit предоставляет средства для формирования минимальной операционной системы для запуска контейнеров. Код написан на языке Go и распространяется (LinuxKit (https://github.com/linuxkit/linuxkit), Moby (https://github.com/moby/moby/blob/moby/README.md)) под лицензией Apache 2.0.
Moby (https://mobyproject.org/) даёт возможность манипулировать готовыми блоками для построения специализированных систем контейнерной изоляции, создавая результирующую систему по кирпичикам по аналогии с конструктором Лего. Предоставляются различные варианты компонентов, охватывающих все аспекты работы систем контейнерной изоляции, включая ОС, runtime, средства оркестровки, инструменты управления инфраструктурой, сетевые подсистемы, хранилища, средства безопасности, сборочные инструменты и механизмы доставки образов. Каждый компонент оформлен в виде контейнера, поэтому создание новых компонентов производится через подготовку OCI-совместимых контейнеров.
Кроме коллекции компонентов, Moby также предлагает специальный инструментарий, который даёт возможность собрать компоненты в форму, готовую для выполнения на выбранных архитектурах и платформах: для установки на конечное оборудование (x86, ARM), в виде исполняемых файлов для Linux, macOS и Windows или образов виртуальных машин для популярных облачных платформ и систем виртуализации. Завершающим звеном является набор эталонных схем компоновки Moby Origin, которые можно использовать в качестве шаблона для связывания компонентов в рабочую систему. В частности, доступен шаблон для формирования из компонентов Moby типовой системы Docker.
Потребителю предоставляются гибкие возможности для экспериментов и подбора оптимальной конфигурации - каждый компонент в шаблоне можно заменять на один из предлагаемых альтернативных вариантов. Например, можно выбрать технологию изоляции или систему оркестровки. Пользователи Moby получают возможность не ограничиваться рамками конкретных продуктов и построить свою инфраструктуру для запуска контейнеров, комбинируя разные подходы с учётом всех своих пожеланий.LinuxKit дополняет Moby и представляет собой тулкит для сборки защищённых, переносимых и компактных операционных систем для Linux-контейнеров. При помощи LinuxKit администратор может сформировать образ ОС, содержащий только минимально необходимый набор компонентов, достаточных для запуска контейнеров. Все системные сервисы в LinuxKit оформлены в виде контейнеров и могут быть заменены или удалены. Минимальный размер сборки, достаточной для запуска контейнеров -
35 Мб.
Конфигурация сборки определяется (https://github.com/linuxkit/linuxkit/blob/master/docs/archit...) в виде YAML-спецификации, на основе которой LinuxKit может подготовить загрузочный образ. В спецификации указывается ядро, процесс инициализации, список контейнеров для запуска, набор системных сервисов, дополнительные файлы для включения в сборку и формат вывода (например, ISO). В качестве основы используются компоненты пространства пользователя дистрибутива Alpine Linux, в том числе системной библиотеки Musl (https://www.opennet.me/opennews/art.shtml?num=39365).
Для повышения безопасности используются патчи PaX и SSP (Stack Smashing Protection, -fstack-protector), а для полноценного использования ASLR при сборке формируются исполняемые файлы PIE (Position-Independent Executable). В перспективе планируется переписать системные компоненты на безопасных языках Rust, Go или OCaml и выполнять их в режиме максимальной изоляции, благодаря сборке в виде самодостаточных "unikernel (https://www.opennet.me/opennews/art.shtml?num=42515)", развитием которых занимался перешедший (https://www.opennet.me/opennews/art.shtml?num=43713) в руки Docker проект MirageOS. Пока на базе unikernel реализован только сервис dhcp, но по мере развития всё больше системных компонентов будут переписываться из Си на безопасные языки и поставляться в форме unikernel.
Особенности LinuxKit:
- Ориентация на предоставление максимальной безопасности по умолчанию, без негативного влияния на удобство работы;
- Все составные части могут быть заменены и перенастроены;
- Постоянная инфраструктура для сборки Linux-дистрибутивов;
- Работа без сохранения состояния (stateless), но с возможностью подключения отдельного постоянного хранилища;
- Простой инструментарий и простые средства интеграции;
- Построение на основе контейнеров и для выполнения контейнеров;
- Рассчитан на сборку и выполнение кластерных приложений, но без привязки к конкретным средствам оркестровки, таким как Docker или Kubernetes;
- Создан в процессе разработки Docker Editions, но преобразован в тулкит общего назначения;
- Рассчитан на использования внешних управляющих инструментариев, таких как Infrakit.
Docker намерен перевести все свои открытые разработки в проект Moby, в том числе разбить движок на серию компонентов, отделить интерфейс пользователя и SDK, открыть новые инструменты, используемые в процессе работы над платформой Docker. Также планируется внедрить сфокусированную на сообществе модель управления, структура которой будет напоминать Fedora для достижения оптимального баланса между интересами сообщества и корпоративного спонсора.URL: https://blog.docker.com/2017/04/introducing-linuxkit-contain.../
Новость: http://www.opennet.me/opennews/art.shtml?num=46420
В анонсе "without having to reinvent the wheel". Ну да, Docker не изобретал колесо, а лишь изобрёл свой велосипед и припарковал его рядом с Atomic, CoreOS, Clear Linux и RancherOS :-)
Так они без него то же придумали, и уже едут на нем (докере) сами, и себе сливки снимают.Тем более что докер - это использование того, что ядро и так умело. Так что эти парни и без докера обойдутся, ему не забаловать сейчас.
Пытаются возглавить, если уж не запретить.
>Тем более что докер - это использование того, что ядро и так умелоЗато со 100%-ым вендор-локом!
> Ну да, Docker не
> изобретал колесо, а лишь изобрёл свой велосипед и припарковал его
> рядом с Atomic, CoreOS, Clear Linux и RancherOS :-)Ага и все эти поделки - пародия на FreeBSD jail. Которому 100 лет в обед.
Машины сравнивать с колёсами...
> Машины сравнивать с колёсами...jail - это вполне законченная машина (в отличие от lxc/cgroups/прочих деталей докера, которыми вручную рулить невозможно, это именно колеса и болты).
Но, увы, запорожец, с мотором в жопе, на фоне адской футуристической херни с крыльями и реактивным двигателем, которую представляет собой докер. Правда, правое крыло на кочке отвалилось, а реактивный двигатель на ходу кто-то вздумал переделать на ядерный, работать не заработало, но дозу облучения хватанули все, потому что биозащита разрабатывалась с отставанием.Чего не умеет jail, что умеют lxc+cgroups (не будем о грустном, в смысле о скриптовой обертке вокруг, называемой докером), причем уже довольно давно: изоляцию файловой системы (скорее плюс jail чем минус, особенно учитывая неимоверные страдания докеров на тему уже третьего подхода к проблеме что-нибудь сохранить между запусками контейнера), как следствие - возвращение в clean state после завершения работы (а это уже точно минус jail, приходится эмулировать ненатуральным образом), виртуализацию сетевых функций (надысь, на кочке отвалилась возможность невиртуализованный интерфейс отдать), полноценное ограничение процессора/памяти (ок, не "полноценное", а хотя бы не хуже чем у докеров)... да дохрена перечислять можно, но и этого уже выше крыши.
В общем, старый это запорожец, очень старый. Картошку на рынок довезти вполне еще может, и починить доступно ребенку, но на хайвей на нем лучше не выезжать - сам не развалится, снесут другие участники движения.
Ты поехавший, сравниваешь jail с lxc, когда новость про докер
Не обращай внимания, у него уже от возраста крышу снесло. Ну его нафик до такого маразма доживать...
> Ты поехавший, сравниваешь jail с lxc, когда новость про докердокер - всего лишь вшивая скриптовая обертка, над _стандартными_ механизмами ядра, теми же, что и lxc - собственного там только уродливая overlayfs (в смысле, именно фанаты докера пропихнули этот треш в ядро...а потом выпилили и запилили новую, имеющую из общего только название, а так пользуйтесь на здоровье и без докера), и та появилась только когда окончательно развалилась aufs или как там ее - мертворожденная и необновлявшаяся с 1995го года, когда универ ее выбросил, но вполне штатная фича ядра.
Просто, в отличие от jail, управлять этими механизмами вручную - невозможно, слишком они низкоуровневые и корявые, а если наскриптовать самому - обратно докер выходит, еще и несовместимый с настоящим.
Ну и никому не приходит в голову распространять треш-софт в виде упакованного в неразбираемую коробочку jail'а, зависящего от еще пяти таких же, по крайней мере, пока.P.S. нет, ну rctl это очень похоже на линуксы, да - низкоуровнево и коряво, в общем-то по мотивам и скопировано, сравнительно недавно. (к jail никакого отношения не имеет, если что - в смысле, для ее работы jail не требуется, применить к jail целиком можно ;-) Не знаю, кто этим всерьез может пользоваться, там еще и побочные эффекты бывают что хоть стой, хоть падай. Фанатам докера не привыкать, а в bsd к этому пока не особо привыкли.
С управлением файрволлом из джейла та же фишка - не то чтобы нельзя, но уродливо и совершенно ненужно. Поскольку нет чужих закрытых коробочек, которые как-то там сами себе файрволл настраивают как им нравится.
> докер - всего лишь вшивая скриптовая обертка, над _стандартными_ механизмами ядраВсё прикладное ПО, "всего лишь вшивая скриптовая обёртка над стандартными механизмами ядра" (пользуюсь вашей терминологией, у вас видимо всё что не kernel space - то скрипт). Так уж повелось, что концептуально сложный код, в частности зацепленный на быстро меняющуюся бизнес-логику полную костылей, в ядро вменяемые люди стараются не пихать. Вместо этого предоставляется широкий интерфейс низкоуровневых вызовов из которых строители прикладного уровня костылят всё что их душе взбредётся здесь и сейчас, без оглядки на "день послезавтрашний".
Потому нарастают вокруг огороды из всякой невидали. И это нормально, для бизнеса, ему вообще не свойственно думать "как идеологически правильней, что бы было по феншую и что бы завтра/послезавтра об этом голова не болела", ему важнее "что бы работало здесь и сейчас" и бабла срубить на этом.Ну а jail бздовый не взлетел, стало быть что-то было в нём не так с точки зрения бизнеса, который и заказывает музыку. Можно бугуртить и дальше, но реальность от этого не изменится.
> полноценное ограничение процессора/памяти (ок, не "полноценное",
> а хотя бы не хуже чем у докеров)...
rctl -a user:vasyan:memoryuse:sigterm=1337M/process
rctl -a user:vasyan:swapuse:sigterm=1337M/process
rctl -a jail:vasyanjail:memoryuse:log=1336M/user
rctl -a jail:vasyanjail:memoryuse:deny=1337M/jailrctl -a (jail|user|process):vasyanX:pcpu:deny=25
> pcpu %CPU, in percents of a single CPU core
> Чего не умеет jail, что умеют lxc+cgroupsjail твой дырявый не умеет полноценного ограничения ресурсов, ибо это просто набор костылей над чрутом.
уже этого должно быть достаточно вполне.
гугли чего умеет network-namespaces и pid-namespaces в этом плане...
например, как в jail мне ограничить полосу пропускания сети, вообще i/o?
> ибо это просто набор костылей над чрутом.Экспертус Анонимус детектeд?
> гугли чего умеет network-namespaces и pid-namespaces в этом плане...Т.е. ты даже сам толком не знаешь?
> например, как в jail мне ограничить полосу пропускания сети, вообще i/o?
Молча глянув в ман?
readbps filesystem reads, in bytes per second
writebps filesystem writes, in bytes per second
readiops filesystem reads, in operations per second
writeiops filesystem writes, in operations per secondACTIONS
action
deny deny the allocation; not supported for cputime,
wallclock, readbps, writebps, readiops, and
writeiops
log log a warning to the console
devctl send notification to devd(8) using system = "RCTL",
subsystem = "rule", type = "matched"
sig* e.g. sigterm; send a signal to the offending
process. See signal(3) for a list of supported
signals
throttle slow down process execution; only supported for
readbps, writebps, readiops, and writeiops.> jail твой дырявый
А неплохо у вас подгорает )
firewall дай запилить, таблицу маршрутов тоже хотелось-бы рихтанутьне? не подгорает?
> firewall дай запилить, таблицу маршрутов тоже хотелось-бы рихтанутьКто-то не дает или религиозные причины не позволяют?
> не? не подгорает?Откуда мне знать, как там у тебя и что?
>> firewall дай запилить, таблицу маршрутов тоже хотелось-бы рихтануть
> Кто-то не дает или религиозные причины не позволяют?
>> не? не подгорает?
> Откуда мне знать, как там у тебя и что?а что jail уже умеет в это? не сливайся анон
>>> firewall дай запилить, таблицу маршрутов тоже хотелось-бы рихтануть
> а что jail уже умеет в это?http://freebsd-jail.freebsd.narkive.com/2YVmxAdB/vnet-jail-w...
> Joe 2013-05-01 00:16:59 UTC
> I have ipfw running inside of a vnet jail on a 9.1-RELEASE host using
> the jail(8) definition statements for starting and stopping the vnet
> jail. As a side note non-vnet jails are working as expected.но ты продолжай резать правду-матку, не стесняйся.
>>>> firewall дай запилить, таблицу маршрутов тоже хотелось-бы рихтануть
>> а что jail уже умеет в это?
> http://freebsd-jail.freebsd.narkive.com/2YVmxAdB/vnet-jail-w...
>> Joe 2013-05-01 00:16:59 UTC
>> I have ipfw running inside of a vnet jail on a 9.1-RELEASE host using
>> the jail(8) definition statements for starting and stopping the vnet
>> jail. As a side note non-vnet jails are working as expected.
> но ты продолжай резать правду-матку, не стесняйся.таки я правильно понимаю, что работу ipwf внутри jail'а ты решил продемонстрировать на примере bug-репорта, это... это так ... по настоящему фрибыэсдэшно
так как насчёт маршрутов? как насчёт прокидования l2 трафика?
> таки я правильно понимаю, что работу ipwf внутри jail'а ты решил продемонстрировать
> на примере bug-репорта, это... это так ... по настоящему фрибыэсдэшноТаки я правильно понимаю, что даже прочитать заголовок ты опять неосилил? А уж тем более, понять, о чем там речь? Это ... это так ... по настоящему эксперто-опеннетно.
> firewall дай запилить, таблицу маршрутов тоже хотелось-бы рихтануть
man jailvnet Create the jail with its own virtual network stack, with its own
network interfaces, addresses, routing table, etc.
git log -L:vnet:./usr.sbin/jail/jail.8commit 3b31921eb1179730750d3f91afe80cd48a49aa95
Author: jamie <jamie@FreeBSD.org>
Date: Wed Oct 20 20:42:33 2010 +0000Initial work on the new jail(8). There are more features to add, and some
cleaning up to do on existing features, but this is pretty much what the
final product will look like.
> не? не подгорает?Оно и видно )
глупыш, ты даже и не понял о чем речь.
это из-за твоей ограниченности (тоннельности) видения, зашоренности на чруто-костылях которые вы гордо именуете jail's.
cgroups - это просто механизм группировки и нарезки ресурсов. и он может работать вовсе без изоляции, то есть без понапиханных по всему ядру фри костылей, вида if jailed(...)
> глупыш, ты даже и не понял о чем речь.
> это из-за твоей ограниченности (тоннельности) видения, зашоренности на чруто-костылях
> которые вы гордо именуете jail's.Что сказать-то хотел, умный ты наш?
>>jail твой дырявый не умеет полноценного ограничения ресурсов
>> как в jail мне ограничить полосу
> cgroups - это просто механизм группировки и нарезки ресурсов. и он может
> работать вовсе без изоляции,Ты бы определился уже, о чем байки травить, а?
>> rctl -a (jail|user|process):vasyanX:pcpu:deny=25
> то есть без понапиханных по всему ядру
> фри костылей, вида if jailed(...)Т.е. ты, такой красивый и умный, в ман все таки не глянул? И даже примеры не читал? Или причем тут привязка к jail?
ахаха, все ваше бсд пародия на ОС, пыжится из под пыли и толком нехрена не может, не десктоп ни сервер, не встраемаемой оси ни виртуализации.
Solaris zones же.
* Попробовал найти свои хинты того времени, но там про зоны только последний http://habrahabr.ru/post/123221/Когда в санках это дизайнили, freebsd учился ходить не в штаны, а родители linux оканчивали школу. Как-то так.
> Когда в санках это дизайнили, freebsd учился ходить не в штаныне знаю, когда они это "дизайнили" (и кому с того было щастье), но solaris 10, на которую ты ссылаешься в чудо-статье - это времена вполне работающей freebsd4.1+ (возможно вообще лучшей версии) и вытеснения солярок на обочину истории. Наверное, происками рептилоидов, а не говенностью системы, устаревшей на двадцать лет.
И да, jail там уже был вполне живой и активно применявшийся (хотя и с некоторыми странностями)
> планируется переписать системные компоненты на безопасных языках Rust, Go или OCamlLOL, как может язык быть безопасным? Хипстерские ярлыки?
PHP-шник что-ле? Управление памятью, изоляция контекста потока и тд сильно снижает количество дыр в программе.
> Управление памятью, изоляция контекста потока и тд сильно снижает количество дыр в программе.Программа не работает, но не работает совершенно безопасно.
>> Управление памятью, изоляция контекста потока и тд сильно снижает количество дыр в программе.
> Программа не работает, но не работает совершенно безопасно.А этим модно-молодежным самобеглым коляскам нужна куча высокотехнологичных запчастей, как и топлива. Поэтому они никогда не заменят лошадей, зуб даю!
> А этим модно-молодежным самобеглым коляскам нужна куча высокотехнологичных запчастей,
> как и топлива. Поэтому они никогда не заменят лошадей, зуб даю!Ага, дхцп оне на го переписали, смех да и только, ip проектрировался с оглядкой на 32битные системы на асме и сях, какого лешего дедушке свой айфон совать, ни дедушка позвонить не сможет ни айфон никогда не заполнит память приложениями и фоточками
> Ага, дхцп оне на го переписали,Cравнил жо*у с пальцем.
> смех да и только, ip проектрировался
> с оглядкой на 32битные системы на асме и сях,А сишка проектировалась с оглядкой на такие системы, на которых сейчас тот же гномовский калькулятор не запустишь. И программы тогда были размерчиком поменьше, а мощность суперкомпьютеров как раз сравнима с современными смартфонами. И глупо как раз не пытаться использовать появившиеся ресурсы, заставив компилятор вместо разработчика просчитывать всевозможные фейлы.
тот dhcp который написали ISC'шники лучше-бы вообще никто не писАл
> PHP-шник что-ле? Управление памятью, изоляция контекста потока и тд сильно снижает
> количество дыр в программе.Погоди, не спрыгивай с темы, выше было сказано безопасно,
а ты уже перекручиваешь в сильно снижает количество дыр.Так сильно снижает или безопасно, грамотей?
Конфигурация должна определятся в Nix с автоматической переборкой и зависимостями. Все другие варианты - ад и погибель. А уж как оно потом деплоится - не важно.
Интересно, а посоны позаботились о воспроизводимости сборки?
А то вся Go экосистема может гарантированно собраться только здесь и сейчас, так как тянет в момент сборки (sic!) всё с гитхаба и кроме того, далеко не для всех компонент прописаны версии и поэтому берутся крайние, а если проект переехал или вдруг выкатили большое изменение, то какбэ... всё, ничего не собирается...Помнится мне понадобилось для некоторой "экзотической" архитектуры (armv7 с каким-то странным линуксом) для автоматизации процесса тестирования собрать этот сраный Докер - хрен там! ни одна версия собираться не хотела, а предсобраных бинарей под это чЮдо не было... Хорошо, что на свете оказался lxc, который в данной ситуации не облажался, так как написан на более правильном для этих задач языке, на С.
В само Go средства сборки без зависимости от github и прочего предоставляет ЕМНИП с версии 1.5. Все сторонние модули, необходимые проекту, можно сложить в папочку vendor и распространять вместе с проектом. Другой вопрос, пользуется ли этим Docker?
> ... так как тянет в момент сборки (sic!) всё с гитхаба и кроме того,Спасибо за эту инфу!
Это не нифа - это брехня :-\ Вендоринг сделали жизнь назад - с 1.5
А что им мешает двинуть это обратно? Само появление на публике такого "решения" говорит о вменяемости решениепринимателей. Ещё раз спасибо, Вы сэкономили мне время.
> тянет в момент сборки (sic!) всё с гитхабаС 1.5 это уже не так, но ты же не осилил.
Объясните, пожалуйста, по-русски, без энтерпрайз фигни: что это? Docker переименовали в Moby? Или Moby - это либа, в которую вынесли компоненты Docker? Или теперь свободная версия Docker будет называться Moby, а энтерпрайзная - Docker? Я ничего не пони
Переименуются в MobyDock и админы отправятся на охоту за белым китом виртуализации.
главное чтоб за синим не бегали
Да-да мобиленд и мобиворлд не за горами.
Moby это эксперементы для быстрой сборки апстрим фич, не для продакшена и апликух.
Каких фич? Там будут фичи, которых не будет в Docker? А Docker до сих пор нельзя быстро собрать?
> Каких фич?Разных
>Там будут фичи, которых не будет в Docker?
Конечно, иначе бы не было отдельного продукта
> А Docker до сих пор нельзя быстро собрать?
Видимо нет, раз начали пилить что-то новое.
Вопросы задавать у тебя получается плохо.
Можешь попробуешь написать связный текст?
А где же ACI и rkt который отлично интегрируется с systemd и journal решая кучу проблем а точки зрения администрирования?Пипл хавает.
Не, ну, это systemd-капец. Alpine на openrc.
Не совсем. Есть такой projectatomic.io с серьезными участниками. Там и systemd и kubernets и контейнеры по другому запускаются. То что пытаются достичь здесь, там уже в interprice заталкивают. Docker пытается изменить и возглавить тренд. Для этого и раздел и выделение sdk. Он не может зайти на рынок по крупному, swarm не может подвинуть kubernets, нет прочной опоры в виде ядра от Red Hat, нет open shift, нет сложившейся репутации и тд. Есть только подписанные доверенные контейнеры, а этого маловато будет. Но прочь ядовитые мысли, пусть у ребят всё получиться.
Тенденция пошла на формирование систем состоящих только из контейнеров. И это, похоже, начало передела рынка серверного по.
В общем запасаемся папкорном, крепкие парни мелкомягкого двигать будут на серверном рынке.