Что: 981b7bf36f06b5f7bcc0773b762bc9a7dfb4e804 Когда: 2021-02-01 17:05:57+03:00 ------------------------------------------------------------------------ Темы: systemd ------------------------------------------------------------------------ Исповедь docker hater https://habr.com/ru/post/467607/ http://www.stargrave.org/www.boycottdocker.org.html Хорошо отмечено, что принципиально ничего нового docker не изобрёл, ведь были jail/zone уже. Только популяризировал эту идею. Хотя и далёкой реализацией и тьмой других проблем. А вообще все проблемы по сути от незнания людей и неумения использовать свои инструменты. Раз уж до сих пор есть hater-ы docker, то выложу ка я www.boycottdocker.org сайт, который в Google выдавался вторым в списке по запросу "docker". ------------------------------------------------------------------------ оставить комментарий: mailto:comment@blog.stargrave.org?subject=Re:%20%D0%98%D1%81%D0%BF%D0%BE%D0%B2%D0%B5%D0%B4%D1%8C%20docker%20hater%20%28981b7bf36f06b5f7bcc0773b762bc9a7dfb4e804%29 ------------------------------------------------------------------------ комментарий 0: From: kmeaw Date: 2021-02-01 21:30:35Z > Хорошо отмечено, что принципиально ничего нового docker не изобрёл, > ведь были jail/zone уже. Но ведь docker - не про это. docker - это такая штука, которая решает следующие задачи: 1) унифицировать софт в одинаковые коробочки, которые можно развернуть на любом линукс-дистрибутиве - если разработчик завернул свою программу в docker-контейнер, то её можно более-менее одинаково запускать на различных версиях Debian, RHEL, ArchLinux, Gentoo и так далее, примерно как AppImage, Snap или Flatpak; 2) даёт простой способ доставлять эти коробочки с помощью registry: docker pull registry.corp.com/my/soft - примерно как репозитории для пакетных менеджеров; 3) предоставляет хостинг, являющийся registry по-умолчанию - примерно как github сейчас для опенсорса; 4) подталкивает разработчика к явному выделению state из приложения, облегчая эксплуатацию и даёт простой способ очистить окружение - отчасти делая процедуру переустановки ОС ненужной. Конечно же, каждое из этих свойств можно получить и без docker, и получится даже лучше, но польза docker в том, что кто-то уже собрал его возможности в одном месте. Можно легко установить docker и начать пользоваться. На мой взгляд, есть всего два сценария, когда docker стоит использовать: 1) Для знакомства с софтом во время быстрого прототипирования - можно не разбираться, как развернуть какой-нибудь Hadoop, а взять готовые чужие контейнеры и начать ими пользоваться. А если Hadoop так и не оказался полезным для решения задачи, то от этих контейнеров будет так же легко избавится. Тут пригождаются свойства 3 и 4. 2) Для предоставления вычислительных мощностей, на которых будет выполняться всё подряд. Некоторый компромисс между образом диска VM и пакетами. Тут же пригоджается явным образом выделенный state, так как подобные вычислительные облака часто проектируются и используются в предположении, что ту часть, где нет ценного состояния, можно потерять и заново запустить в другом месте. В этом сценарии - 1, 3 и 4. ------------------------------------------------------------------------ комментарий 1: From: Sergey Matveev Date: 2021-02-02 06:41:08Z *** kmeaw [2021-02-02 00:23]: >> ведь были jail/zone уже. >Но ведь docker - не про это. Но всё это можно было очень просто наворотить поверх jail/zone/whatever. >Конечно же, каждое из этих свойств можно получить и без docker, и >получится даже лучше, но польза docker в том, что кто-то уже собрал его >возможности в одном месте. Можно легко установить docker и начать >пользоваться. Для меня главное -- что сделав это "нормально" (с моей точки зрения) будет лучше. >На мой взгляд, есть всего два сценария, когда docker стоит использовать: >1) Для знакомства с софтом во время быстрого прототипирования Гипотетическую пользу эту я тоже вижу. >2) Для предоставления вычислительных мощностей, на которых будет >выполняться всё подряд. Некоторый компромисс между образом диска VM и >пакетами. Плюс добавить тьму геморроя связанного с этим state и зачастую, как я видел на практике, требующую или костылей или изменения софта. Главная проблема Docker-а, которую я вижу -- его экосистема. В том числе и то что вы назвали его плюсами в виде репозиториев. С Docker я всё же был знаком и видел (да и сейчас иногда ради любопытства заглядываю в его dockerfile) как пишут его описания сборок. Сплошное ничем не верифицируемое скачивание бинарей с Интернета. На днях я вот делал shell скрипт который автоматически собирает и разворачивает Go1.4, Go, и ещё ряд Go софта -- если это git, то обязательный checkout на нужный commit. Если это что-то скачанное fetch-ем, то обязательная сверка хэша. Я почти не встречал dockerfile-ов которые бы хоть как-то указывали конкретные версии, зависимости или аутентификационные данные. Регулярно появляются новости о том, что даже официальные сборки Docker-контейнеров от крупных компаний вовсю пестрят от тьмы необновлённого софта с уязвимостями. Никто в целом не следит за актуализацией dockerfile-ов. It worked for me -- конечная финальная стадия почти всех dockerfile-ов в публичном доступе (как там дела внутри компаний -- возможно сильно лучше). Если я вижу dockerfile или использование Docker, то мысль только об одном -- запускать это на своём компьютере будет самоубийством с точки зрения безопасности. Для Docker-а, как для любого проприетарного софта, нужна отдельная железка, ибо запускается (как правило) куча какого-то говнища, ибо качество dockerfile-ов говорят об отношении авторов к этому. Согласен что это нечто типа готовых виртуальных машин, просто без некоторого overhead-а. Docker как будто поощрает и плохое написание и ведение кода. Вместо того чтобы стараться писать хорошую документацию по администрированию, вообще делать удобный для администрирования, разворачивания и установке софт -- люди с Docker-ом просто скажут "just use our dockerfile". С таким же успехом можно бы было им просто отдавать образы своих машин. Отсутствие знаний, отсутствие архитектуры софта. Опять же, на днях вот я делал задачу где используется для тестирования Си кода много Go программ, и в довесок Python программы. Как-то не гоже же ведь требовать от человека установки Python для запуска утилит по подготовке X.509 сертификатов? Я потрачу пару часов на переписывание этих утилит (хотя вот же они -- готовы!) на Go, но чтобы человеку было бы удобно. Если бы я использовал Docker, но у меня бы такой мысли не возникло, ибо я бы просто указал установку Python. А если документация содержит PlantUML схемы, которые я люблю, то в Docker ещё бы полезла Java. Кто-то скажет что Docker сэкономил бы пару часов моей работы. А я скажу что у меня есть уважение к окружающим и есть желание делать удобный софт. Docker образ это такой blackbox с которым никто не будет и не захочет разбираться -- поэтому и качество софта там, так сказать, проприетарное: тяп, ляп и готово. Всё что я вижу и что описал -- само собой Docker тут не причём. Это отсутствие культуры у людей. Проблема на 100% в людях пишущих dockerfile-ы и Docker ничего тут поделать не может. Как у людей уже сложилось мнение о PHP и всей его экосистеме как низшем языке где только говнокодить можно, так вот и о Docker аналогично. Хотя даже я знаю, что PHP вполне себе не плох и на нём можно достойные вещи делать. Так получилось, что PHP используется (использовался, сейчас это уже про JavaScript можно говорить) не лучшими программистами. Ну отдельно у меня были и технические нарекания к нему. Слышал что что-то стало получше, но раньше годами он совсем не дружил с IPv6. Насколько помню, он был заточен на то, чтобы делать вообще NAT с IPv4 адресами внутри контейнера. Я вот сейчас на работе правлю некоторый Си код чтобы я мог писать хотя бы "::1", вместо "localhost" или "127.0.0.1", а Docker бы меня так лет на 20 назад откидывал в древний IPv4-only мир. В общем, это holywar-ная тема. Я *ничего* хорошего в Docker вот не вижу, но почти всё это связано с людьми которые не умеют использовать софт, у которых нет культуры разработки. Есть люди которые готовы писать документы в облачных Microsoft Office решениях. Ok. Мне не по пути с ними -- я такое в здравом уме никогда не смог бы выбрать или даже рассмотреть как вариант. Docker примерно из этой же серии. Как и systemd. ------------------------------------------------------------------------ Сгенерирован: SGBlog 0.34.0