Настроил TrueNAS, погрузился в нюансы контейнеризации во FreeBSD. И вдруг стало интересно — а кто вообще этим пользуется, и кому интересно над этим работать? Про Docker, например, кричат из каждого утюга, на этот проект, как говорил Линус, смотрят сотни глаз, и всё равно нельзя назвать докер супер-стабильным. А тут вдруг существует параллельный проект, про который я не слышал от слова совсем. Про Open/Free BSD я слышал ещё давно и даже где-то читал, что для сервера эти проекты, вроде как, постабильнее будут, но то было лет 15 назад, с тех пор линукс шагнул далеко вперёд. Существование и развитие таких проектов кажется необъяснимым на фоне новостей, что xz настолько некому разрабатывать, что там всё поросло паутиной и бэкдорами, а FreeType пилит какой-то отчаявшийся одиночка, которому никто не платит.
Здравствуйте, cppguard, Вы писали:
C>Настроил TrueNAS, погрузился в нюансы контейнеризации во FreeBSD. И вдруг стало интересно — а кто вообще этим пользуется, и кому интересно над этим работать? Про Docker, например, кричат из каждого утюга, на этот проект, как говорил Линус, смотрят сотни глаз, и всё равно нельзя назвать докер супер-стабильным.
Докер это просто обёртка вокруг namespaces в ядре линукса. Он стабилен настолько, насколько стабильно ядро. Думаю, оно вполне стабильно.
C>А тут вдруг существует параллельный проект, про который я не слышал от слова совсем.
Ну ты не слышал, кто-то слышал. Я, например, слышал. По сути это просто развитие концепции chroot, которой уже сто лет в обед. С докером сравнивать неправильно, это скорей что-то вроде lxc.
C>Про Open/Free BSD я слышал ещё давно и даже где-то читал, что для сервера эти проекты, вроде как, постабильнее будут, но то было лет 15 назад, с тех пор линукс шагнул далеко вперёд.
Непонятно, что именно ты вкладываешь в понятие стабильности. Работать — работают (если железо поддериваемое). Код обновляется. Я OpenBSD на своём хобби-сервере периодически запускаю, хорошая система. С линуксом сравнивать смысла не вижу, это как сравнивать Nokia и Android. Если тебе достаточно звонить и SMS получать — нормально. Так и тут.
C>Существование и развитие таких проектов кажется необъяснимым на фоне новостей, что xz настолько некому разрабатывать, что там всё поросло паутиной и бэкдорами, а FreeType пилит какой-то отчаявшийся одиночка, которому никто не платит.
Проект проекту рознь. Про социальные аспекты организации Open Source проектов я говорить не готов, но очевидно, что у кого-то получается создать community, в котором достаточно заинтересованных членов, у кого-то получается какое-то финансирование наладить, а у кого-то всё на энтузиазме одного человека держится. Как именно это получается — не знаю. Но в OpenBSD к примеру контрибутят достаточно много людей, хотя главный там всё равно есть и что будет без него — не знаю.
Я ещё так напишу. IT очень сильно выросло. И ряд технологий вроде того же докера очень сильно хайпуют. И мне кажется этот хайп как бы затмевает немного технические основы. Докер можно написать в несколько десятков строк на баше. Не прям весь со всеми флагами, конечно, но просто запустить контейнер из образа. В нём нет ничего сакрального или очень объёмного. Вот разрекламировать его так, чтобы все его использовали — это да, это надо уметь, но это уже не про IT, а про маркетинг.
Из интересного по тему — есть такая то ли компания, то ли стартап — 0xide. Они продают серверные шкафы со своим софтом, что-то вроде замены облака. Продают за деньги порядка миллиона долларов. Честно говоря не знаю какой у них рынок и объёмы, но статьи их интересно читать. Я так понял — они используют Illumos и в нём bhyve вместо Linux и KVM для виртуализации. Illumos это тоже такой UNIX сделанный на основе OpenSolaris, который в свою очередь был сделан компанией Sun на основе той самой BSD. Тоже вот не совсем привычное решение у ребят с деньгами. Не линукс. Хотя, конечно, в виртуалках будет крутиться линукс.
В общем IT оно большое за прошедшие десятки лет получилось и альтернатив в нём очень много. И далеко не всегда то, что супер-популярно, является априори лучшим.
Во-первых Docker это не то же самое, что контейнерная виртуализация в Linux и наоборот.
В первом комментарии уже отметили, что контейнерная виртуализация это прежде всего механихмы namespaces и cgroups в Linux kernel.
Их используют различные приложения, и Docker далеко не первое и не единственное.
Я например использую Linux контейнеры (LXC) где-то с 2010 года, но с Докером пока дела не имел.
LXC — это более простой инструмент с меньшим числом зависимостей, тогда как Докер это несколько более навороченная штука изначально ориентированная на stateless контейнеры и application изоляцию (одно приложение/сервис).
Кроме того Докер появился заметно позже (2013 вроде бы).
По-скольку контейнерная виртуализация привязана к фичам ядра, то просто так в другие ОС она не переносится, даже *nix, не говоря уже о MS Windows.
По поводу параллельных проектов нужно понимать, что Freebsd Jails это начало 2000-х, тогда как поддержка namespaces в Linux kernel появлялась поэтапно с 2002, поддержка cgroups — c 2008 года, тогда же вышел LXC.
Для сравнения: в MS Windows нативные контейнеры (а не стороннее решение) — появились только в Windows Server 2016.
По-поводу того, кто пилит: в легковесной контейнерной виртуализации, работающей без hardware virtualization всегда были заинтересованы хостинги (web/vps/vds) и поставщики решений для них.
В частности, насколько мне известно, VPS на базе FreeBSD/jails предоставлял firstvds.ru.
Но это не точно, возможно там было какое-то свое решение поверх FreeBSD.
They mention FirstVDS.ru, but that website is in Russian. The same
Russian company has also English-language website, you can choose
server in USA (NAC MMU datacenter near NYC) or Russia.
I use their cheapest VPS option (now $4.95/month) since 2008.
It's a jail under FreeBSD with limited resources
(RAM 64M, swap 128M, disk 5 GB, traffic 100 GB/month, one IPv4 IP-address).
Kernel RAM and preinstalled packages aren't counted in these limits.
If you use this link for ordering then both you and me get a discount: http://joinvps.com/?from=33485
In my VPS (jail) I installed (from ports) `mathopd` web-server and Exim
instead of default Apache and sendmail. My Exim config including
all the spam-filtering: https://github.com/Exim/exim/wiki/LenasConfig
Говоря о контейнерной виртуализации не лишним будет вспомнить также про Solaris Zones. В общем почти все производители ОС рано или поздно её выкатывали.
Предыдущий комментатор очень к месту упомянул bhyve — инструмент полной виртуализации в *BSD, аналог kvm в Linux kernel.
Бизнес склонен спонсировать такую разработку, т.к. BSD лицензия им гораздо лучше подходит чем GPL.
Здравствуйте, cppguard, Вы писали:
C>Настроил TrueNAS, погрузился в нюансы контейнеризации во FreeBSD. И вдруг стало интересно — а кто вообще этим пользуется, и кому интересно над этим работать? Про Docker, например, кричат из каждого утюга, на этот проект, как говорил Линус, смотрят сотни глаз, и всё равно нельзя назвать докер супер-стабильным. А тут вдруг существует параллельный проект, про который я не слышал от слова совсем. Про Open/Free BSD я слышал ещё давно и даже где-то читал, что для сервера эти проекты, вроде как, постабильнее будут, но то было лет 15 назад, с тех пор линукс шагнул далеко вперёд. Существование и развитие таких проектов кажется необъяснимым на фоне новостей, что xz настолько некому разрабатывать, что там всё поросло паутиной и бэкдорами, а FreeType пилит какой-то отчаявшийся одиночка, которому никто не платит.
Docker — это оболочка к таким механизмам линуксового ядра, как namespaces и cgroups. Ну и плюс к тому, докер заведует всеми этими docker images, позволяя их создавать, распространять и т.п., но это уже файловый уровень, а не ядерно-контейнерный.
FreeBSD-ный Jail можно сравнивать с namespaces + cgroups, а не с докером. Какие там в BSD существуют к этому механизму оболочки, я понятия не имею.
У линукса значительно более вылизанный сетевой стек, чем в BSD. Это не всегда было так, но но в какой именно момент времени линух ощутимо вышел вперед, я так уж навскидку не скажу.
Здравствуйте, vsb, Вы писали:
vsb>Докер это просто обёртка вокруг namespaces в ядре линукса. Он стабилен настолько, насколько стабильно ядро. Думаю, оно вполне стабильно.
В докере есть всякие разные дополнительные удобства, и их там много.
Например, два докера, запущенные на одной машине, могут найти друг друга с помощью встроенного виртуального DNS-сервера,
Все эти удобства активно разрабатываются, и наверное, не всегда стабильны.
vsb>Illumos это тоже такой UNIX сделанный на основе OpenSolaris, который в свою очередь был сделан компанией Sun на основе той самой BSD. Тоже вот не совсем привычное решение у ребят с деньгами. Не линукс. Хотя, конечно, в виртуалках будет крутиться линукс.
Эээ. Бебебе. SunOS был сделан на основе BSD, но вот Солярис — это настоящая SysV R4. Вероятно, последняя уцелевшая. Т.е., корнями он восходит к тому самому AT&T UNIX, который Ричи и Томпсон написали, чтобы заныкать себе бесхозную PDP-ку и играть на ней в Startrack. В отличии от всех прочих UNIX-like.
Здравствуйте, m2user, Вы писали:
M>По-скольку контейнерная виртуализация привязана к фичам ядра, то просто так в другие ОС она не переносится, даже *nix, не говоря уже о MS Windows.
На самом деле Docker для Windows есть, не тот, что с виртуалкой линуксовой внутри, а с полноценными виндовыми контейнерами, в которых можно запускать виндовый софт. Ну это так, для полноты информации.
Здравствуйте, vsb, Вы писали:
M>>По-скольку контейнерная виртуализация привязана к фичам ядра, то просто так в другие ОС она не переносится, даже *nix, не говоря уже о MS Windows.
vsb>На самом деле Docker для Windows есть, не тот, что с виртуалкой линуксовой внутри, а с полноценными виндовыми контейнерами, в которых можно запускать виндовый софт. Ну это так, для полноты информации.
Вроде только на серверных виндах полноценная поддержка, а на десктопных через виртуалку работает. И к софту будет куча требований, чтобы в контейнер его поместить.
да нет там вроде никаких особо требований.
Устройства из /dev/ пробросить, если софт их использует, да capabilities подкрутить.
Ну были ещё старые bug`и типа nfsd из разных контейнеров конфликтовали.
Но это было в конкретном дистрибутиве тривиальная проблема прибития демона по имени, а не по pid.
С udev были какие-то небольшие проблемы.
Насколько я помню у меня в контейнере только xen-tools не завёлся, но не то чтобы я сильно старался.
Здравствуйте, vsb, Вы писали:
vsb>Я ещё так напишу. IT очень сильно выросло. И ряд технологий вроде того же докера очень сильно хайпуют. И мне кажется этот хайп как бы затмевает немного технические основы. Докер можно написать в несколько десятков строк на баше. Не прям весь со всеми флагами, конечно, но просто запустить контейнер из образа. В нём нет ничего сакрального или очень объёмного. Вот разрекламировать его так, чтобы все его использовали — это да, это надо уметь, но это уже не про IT, а про маркетинг.
В целом да, про маркетинг. Только не в том негативном смысле, который в это слово обычно вкладывают технари — "искусство впарить фигню путём оборачивания в красивость". А тот, который настоящий — про понимание потребностей целевой аудитории.
К моменту выхода докера решений по контейнерной виртуализации было как блох на собаке.
Его отличие от конкурентов (или там запуске контейнера скриптом на баше) — в инфраструктуре и стандарте. Пока все задроты фокусировались на технических деталях запуска контейнеров, докер ответил на неинтересный задротам вопрос "а где я возьму образ контейнера?". Заодно предоставив в обоснование своего варианта ответа целую философию.
До докера стандартным ответом на вопрос "нафига вам контейнеры" было "нууу... эта... мы хотим виртуальные машины, но дешевле, чем настоящие виртуальные машины". Что, в свою очередь, было логичным продолжением ответа "мы хотим приватные сервера, но дешевле, чем настоящие приватные сервера" на вопрос "нафига вам виртуальные машины".
А образы, что VMок, что VPSок, считались побочным продуктом и отходами жизнедеятельности. Вроде "если вы хотите упростить тестирование софта, то сделайте снапшот виртуалки после начальной настройки, но перед началом тестирования".
И тут приходит такой докер и говорит: "не, вы не будете самостоятельно напиливать себе образ контейнера с нуля. Вы возьмёте из публичного репозитория готовый образ, настроенный вендором или другим контрибутором, и сразу поедете". И делается это не для того, чтобы поднять очередной "сервер на похапэ с почтой и мускулом", а "чтобы не пердолиться с зависимостями, когда вебстор требует одну версию питона, а диаграмминг статистики — другую".
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, vsb, Вы писали:
vsb>В общем IT оно большое за прошедшие десятки лет получилось и альтернатив в нём очень много. И далеко не всегда то, что супер-популярно, является априори лучшим.
а можно для чайника, зачем это все нужно?
Чтобы стороннее ПО не натворило бед в системе и не покоцало чужие файлы?
Чтобы работало в ОС без установки, и не создавало кучу файлов в разных директориях, и так же легко удалялось?
Чтобы ПО тащило вместе с собой все зависимости нужных ему версий?
Кто этим пользуется обычно?
Это и есть основные юзкейсы всех этих джейлов, докеров и неймспейсов?
Помнится я когда-то ставил ОС в виртуалку, когда надо было потенциально опасное ПО запустить или протестить на другой версии ОС или просто чистой инсталляции (как было бы у рандомного пользователя), где может не оказаться нужных зависимостей. Но как я понимаю, докеры решают совсем другую задачу.
Здравствуйте, opfor, Вы писали:
O>а можно для чайника, зачем это все нужно?
O>Чтобы стороннее ПО не натворило бед в системе и не покоцало чужие файлы? O>Чтобы работало в ОС без установки, и не создавало кучу файлов в разных директориях, и так же легко удалялось? O>Чтобы ПО тащило вместе с собой все зависимости нужных ему версий?
Да, всё это, примерно. Ну ещё можно безопаность добавить, в контейнерах она, конечно, несколько условная, но всё же лучше, чем ничего. Если злоумышленник взломал ПО в контейнере, то выбраться из контейнера это отдельная задача.
O>Кто этим пользуется обычно?
Тут, наверное, сложно сказать, каждый в своём пузыре живёт. Я вообще не представляю сейчас жизнь без докера и пользуюсь ими для всего. Так что для меня этот вопрос не имеет смысла. Прошивку для микроконтролера собираю в докере, например. Торрент-качалку запускаю в докере. ВПН сервер запускаю в докере. Всё запускаю в докере. Вот вскод пока не запускаю в докере, но изучаю этот вопрос, скорей всего и его запущу. Все проекты в моей компании билдятся в образы и запускаются или в докере, или в кубере, по-другому просто не делается.
O>Помнится я когда-то ставил ОС в виртуалку, когда надо было потенциально опасное ПО запустить или протестить на другой версии ОС или просто чистой инсталляции (как было бы у рандомного пользователя), где может не оказаться нужных зависимостей. Но как я понимаю, докеры решают совсем другую задачу.
В целом похожую. Но только "виртуалка" более легковесная (запускается за долю секунды) и для неё создано много всего удобного.
Здравствуйте, vsb, Вы писали:
A>>Вроде только на серверных виндах полноценная поддержка, а на десктопных через виртуалку работает.
vsb>Нужна редакция Professional или Enterprise. Professional вполне доступна любому.
Это понятно, но работать на десктопе контейнеры будут через hyper-v.
A>>И к софту будет куча требований, чтобы в контейнер его поместить.
vsb>Как и в линуксе, очевидно.
Здравствуйте, opfor, Вы писали:
O>а можно для чайника, зачем это все нужно? O>Чтобы стороннее ПО не натворило бед в системе и не покоцало чужие файлы? O>Чтобы работало в ОС без установки, и не создавало кучу файлов в разных директориях, и так же легко удалялось? O>Чтобы ПО тащило вместе с собой все зависимости нужных ему версий?
Да, всё перечисленное, как минимум.
O>Кто этим пользуется обычно? O>Это и есть основные юзкейсы всех этих джейлов, докеров и неймспейсов?
В первую очередь, да, это. Но тут есть принципиальная разница между просто контейнеризацией и тем, что делает докер (и аналоги, коих уже много, с ходу помнится podman).
Docker, podman и пр. — обеспечивают не только запуск контейнера, собранного кем-то снаружи, но и его сборку — в первую очередь. Взял базу (которую можно минимизировать), добавил нужные зависимости, сверху плюхнул целевое приложение — и работаешь с ним. И ещё и экономия на повторах процедуры за счёт знания содержимого слоёв и если одна и та же база используется во многих контейнерах.
А над этим сверху ещё и экосистема таких заранее подготовленных кем-то контейнеров и целых "стручков" ("pod" в Kubernetes), которые можно брать готовыми, и дошлифовывать под свои нужды.
O>Помнится я когда-то ставил ОС в виртуалку, когда надо было потенциально опасное ПО запустить или протестить на другой версии ОС или просто чистой инсталляции (как было бы у рандомного пользователя), где может не оказаться нужных зависимостей. Но как я понимаю, докеры решают совсем другую задачу.
В простейшем случае — ты просто поставил контейнер, вошёл в него, добавил нужное и запустил — эту.
Чуть доработал, добавив установку в сборочный скрипт — и уже не нужно руками повторять операцию установки, каждый раз заново напустил и полетело.
Добавил монтирование каталога снаружи внутрь — и вот тебе персистентные данные, если надо (а если не надо, засинкал с оригинала между запусками).
Настроил какие сервисы слушают внутри и как к ним прийти снаружи — получил сервер в изоляции. Несколько таких серверов — можно вязать друг с другом.
И так далее. Я ещё только самый минимум описал.
Здравствуйте, vsb, Вы писали:
vsb>Тут, наверное, сложно сказать, каждый в своём пузыре живёт. Я вообще не представляю сейчас жизнь без докера и пользуюсь ими для всего. Так что для меня этот вопрос не имеет смысла. Прошивку для микроконтролера собираю в докере, например. Торрент-качалку запускаю в докере. ВПН сервер запускаю в докере. Всё запускаю в докере. Вот вскод пока не запускаю в докере, но изучаю этот вопрос, скорей всего и его запущу. Все проекты в моей компании билдятся в образы и запускаются или в докере, или в кубере, по-другому просто не делается.
Вопрос без подвоха: зачем торрент-качалку и т.п. запускать в докере?
Здравствуйте, Skorodum, Вы писали:
vsb>>Тут, наверное, сложно сказать, каждый в своём пузыре живёт. Я вообще не представляю сейчас жизнь без докера и пользуюсь ими для всего. Так что для меня этот вопрос не имеет смысла. Прошивку для микроконтролера собираю в докере, например. Торрент-качалку запускаю в докере. ВПН сервер запускаю в докере. Всё запускаю в докере. Вот вскод пока не запускаю в докере, но изучаю этот вопрос, скорей всего и его запущу. Все проекты в моей компании билдятся в образы и запускаются или в докере, или в кубере, по-другому просто не делается. S>Вопрос без подвоха: зачем торрент-качалку и т.п. запускать в докере?
В основном ради изоляции. Современные ОС особо не развивались за последние 30 лет и там по прежнему любая программа может делать что угодно. Невозможно удалить никакую программу надёжно. Невозможно обновить никакую программу надёжно. Контейнеры решают эту проблему на 100%, поэтому всегда, когда что-то можно сделать с контейнерами, это будет лучше.
Здравствуйте, Skorodum, Вы писали:
S>Вопрос без подвоха: зачем торрент-качалку и т.п. запускать в докере?
Еще удобно что все что надо для "торрент качалки" описано в 1 месте, все переменные, директории, конфиги и тд.
Здравствуйте, vsb, Вы писали:
vsb>В основном ради изоляции. Современные ОС особо не развивались за последние 30 лет и там по прежнему любая программа может делать что угодно. Невозможно удалить никакую программу надёжно. Невозможно обновить никакую программу надёжно. Контейнеры решают эту проблему на 100%, поэтому всегда, когда что-то можно сделать с контейнерами, это будет лучше.
Интересно, спасибо.
В линухе у меня таких проблем нет (или последствия за время жизни ОС/ноутбука никак не ощущаются). Винда обычно виртуальная, но там всего пара состояний.