[О блоге] [наверх] [пред] [2021-02-01 17:05:57+03:00] [981b7bf36f06b5f7bcc0773b762bc9a7dfb4e804]
Темы: [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".

    [оставить комментарий]
    комментарий 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.