LINUX.ORG.RU

В чем плюсы контейнеров для разработки?

 ,


3

3

Вот есть классический подход: наваял тулчейн (например, с помощью crosstool-ng), напихал туда нужных библиотек и таскаешь его с собой между системами в виде архива.

Сейчас модно нахерачить целый докер образ и таскать его с собой.

Вопрос: в чем плюс подобного подхода?

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


Ответ на: комментарий от byko3y

Я под оффтопом ставил в тихом режиме пакеты питона, потом

Ну вот и началось. У кого ванильный питон, а у кого анаконда. Ты мне сейчас предложишь писать скрипт, который будет разруливать это, но я тебе еще дальше проблем подкину, которые так же можно решить в скрипте. А теперь вопрос: зачем? Я и скрипты писал, и в докер заворачивал, решение взвешено. Единственная проблема - где-то еще не знакомы с докером, там по старинке со скриптами.

winlook38 ★★ ()
Ответ на: комментарий от Lzzz

Технологических преимуществ перед Амазоном нет. Остается «попильные конторы которые зарабатывают на том что хорошо умеют ориентироватся в бюрократическом кошмаре». Тут конечно Амазон проигрывает, эльбрусы туда поставить очень сложно или совсем нельзя

Выделенный сервер на двухпроцессорном зеоне 32 ядра и 256 Гб оперативы на амазоне стоит порядка 2000-3000$ в месяц (поправьте, если ошибся). На хецнере или в ДЦ москвы такой сервер стоит порядка 300-500$ в месяц. Арифметика ясна? Нет, конечно, для целей распилов чем выше ценник — тем проще им прикрыться.

byko3y ()
Ответ на: комментарий от byko3y

Кубернет не нужен почти никому.

Кто сказал? Ты?

К слову, я не вижу проблемы с ансиблем в этом случае.

С ансиблом проблемы нет. Есть проблема с тем, что ты сравниваешь член с пальцем.

hateyoufeel ★★★★★ ()
Ответ на: комментарий от ugoday

Например результаты отладки у всех разработчиков будут одинаковыми, а не у Васи питон такой, у Пети версии библиотек сякие

Советую сразу придумать, как сделать так, чтобы не получилось, что у Пети версии библиотек такие, а на проде — другие. Они-то все равно будут разные, но одной версии.

А на самом деле докер контейнер это обычный процесс операционной системы, и вы можете делать с ним всё то же самое, что и с любым другим процессом

Подключаюсь к процессу контейнера из хоста с помощью gdb, и вижу мусор вместо символов, потому что файлы с символами остались в контейнере. Теперь мне нужно вытаскивать бинарники из контейнера, получая копию приложения одновременно в контейнере и на хосте. Как прелестно.

byko3y ()

Вопрос: в чем плюс подобного подхода?

Зависит от твоих задач, может и не быть.

Иногда не хочется ради «распробовать» засирать основную систему. Ну или нужна конфигурация с подвывертом, которую никто в голове не держит.

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

Вот пример https://github.com/lvgl/lv_font_conv. Основной код вообще на жабаскрипте. Но раз в сто лет надо пересобрать новый фритайп в WebAssembly. Естественно, почти никто в деталях не шарит, а подробности даже сами авторы через месяц не помнят. Поэтому все завернуто в докер, который любой бибизьян осилит запустить. Даже под вендой.

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

Пока ты один, ты волен делать как угодно. Но часто в проектах нужны люди с разной специализацией и разной квалификацией. Они могут например быть дизайнерами, которые вообще на болту вертели твой линукс. И тратить их время на ковыряние с установкой софта - как минимум не рационально.

Или вот шел кто-нибудь мимо твоего гитхаба, и треснуло ему в голову тебе помочь. Бывает и так. Завтра он уже уйдет. Если станешь пальцы гнуть «ты чо, софт поставить не можешь», он покрутит пальцем у виска и пойдет поможет кому-то другому. В итоге ты вроде как крут, но в пролете :)

Vit ★★★★★ ()
Ответ на: комментарий от winlook38

У кого ванильный питон, а у кого анаконда. Ты мне сейчас предложишь писать скрипт, который будет разруливать это, но я тебе еще дальше проблем подкину, которые так же можно решить в скрипте. А теперь вопрос: зачем? Я и скрипты писал, и в докер заворачивал, решение взвешено

Под нативный оффтоп ты ничего в докере не сделаешь. Если стоит задача сделать простое создание virtualenv одной командой на любом оффтопе, то для этого делается пакет py2exe, который тупо запускает этот самый venv.

byko3y ()
Ответ на: комментарий от winlook38

Ну и нафига использовать это говно там, где есть стандартный инструмент, аналог которого на баше занимает больше 10 строк?

Я не понял фразы. Где есть, какой стандартный инструмент?

byko3y ()
Ответ на: комментарий от ugoday

Вам нужно, чтобы на целевой системе была нужная JVM строго определённой версии.

Puppet/Chef/Ansible/etc - способ обеспечить это.

Докер — способ обеспечить это

Молоток Маслоу.

Докер - способ на компутере разработчика поднять тысячи окружений под условия тысяч заказчиков. А не наоборот.

mogwai ★★★★ ()
Ответ на: комментарий от winlook38

А теперь на всем кластере. А завтра на другом.

Отдайте плейбуки переписать кому-то с руками не из того места, на котором он думает. Тогда от кластера к кластеру их сильно редактировать не придётся.

Сколько будешь делать? Во сколько час своей работы оцениваешь?

Лучше бизнес оплатит несколько часов своему топовому разработчику один раз, чем по несколько часов девджамшутамопсам каждый день платить будет.

mogwai ★★★★ ()
Ответ на: комментарий от byko3y

Под нативный оффтоп ты ничего в докере не сделаешь

Ты не сделаешь. Я сделаю:

FROM mcr.microsoft.com/windows/servercore:ltsc2019

И я этим активно пользуюсь.

делается пакет py2exe

Ох уж эти сказки от слышавших, но не делавших. py2exe пройденный этап. Контейнеры после него - верх стабильности и воспроизводимости. Я на контейнеры перешел после того, как в приложении с плагинным движком отвалились плагины. А ты, получается, ничего серьезного не опакечивал.

winlook38 ★★ ()
Ответ на: комментарий от mogwai

Отдайте плейбуки переписать кому-то с руками не из того места

Зачем ты мне мои советы советуешь. Посоветуй это гуру чрутов, которые в рукопашную воспроизводят требуемое окружение с помощью баш-портянок.

Лучше бизнес

… без тебя посчитает свои деньги.

winlook38 ★★ ()
Ответ на: комментарий от winlook38

… без тебя посчитает свои деньги.

Это ты начал считать чужие деньги\затраты.

Посоветуй это гуру чрутов, которые в рукопашную воспроизводят требуемое окружение с помощью баш-портянок.

Т.е. либо докер, либо баш портянка?

mogwai ★★★★ ()

И снова здравствуйте, граждане.

Некоторые регистранты и регистрант, периодически ходивший под анонимом (не умеющие писать на шелле, что (неумение пользователей писать на шелле) и было мной заявлено как основная киллер-фича докера; это тезис даже сейчас они и подтверждают, фикая на баш-портянки) толпой лезли делать беспруфные, но громко кричащие заявления про стопроцентную повторяемость докерфайлов, про логи и про то, что умение запустить debootstrap выкидывает человека с рынка.

Предлагаю беспруфным гражданам посмотреть в https://hub.docker.com/_/debian :

Первая же ссылка ведёт на такой докерфайл:

FROM scratch
ADD rootfs.tar.xz /
CMD ["bash"]

Повторяемость, действительно, блестящая. Но я, пожалуй, буду считать, что так нелюбимая анскильными в шелле (да что там в шелле, банально в архитектуре и написании программ, судя по громогласным заявлениям про то, что хардкод на хардкоде — это норма) баш-портянка с debootstrap внутри (да что там debootstrap, банально скрипт ОПа с тарболлами, если он сборку своего тулчейна возложил на скрипт) имеет большую повторяемость.

anonymous ()
Ответ на: комментарий от mogwai

Это ты начал

Ну вот пусть он посчитает и выдаст свой расчет. За себя могу ответить, намного проще, когда заказчик не требует срочно разобраться почему не работает приложение, когда у него сбойнула среда эксплуатации. Если сервис перезапустился и продолжает работать, возможно, ничего и не нужно делать. Логи собираются, анализируются. Мы же не в XX веке живем. SRE book проповедует то же самое, более того, они проповедуют подход самоисправляющихся сервисов. Мы до этого не доросли пока.

Т.е. либо докер, либо баш портянка?

Я вообще не понимаю как люди разделяют докер и баш. Я не написал ни одного докерфайла без RUN и зачастую в RUN вызов баш-скрипта. Я к тому, что докер берет на себя часть рутины, которую мне предлагают повторять каждый раз вручную, с намеком на то, что я не осилил.

winlook38 ★★ ()
Ответ на: комментарий от byko3y

Советую сразу придумать, как сделать так, чтобы не получилось, что у Пети версии библиотек такие, а на проде — другие.

Docker.

Подключаюсь к процессу контейнера из хоста с помощью gdb,

Вы найдёте правильный ответ, когда прочитаете документацию (она хорошая) и получите менее поверхностное знакомство с предметом.

ugoday ★★★★★ ()
Ответ на: комментарий от Vit

а подробности даже сами авторы через месяц не помнят. Поэтому все завернуто в докер, который любой бибизьян осилит запустить.

Вот, кстати, тоже важный момент. Тут все любят пальцы гнуть, мол, вокруг одни обезьяны и лишь они — венец эволюции. Но когда посреди ночи тебя будит истошный вопль alert manager’а об упавшем проде, а кастомер саксесс менеджеры толкают под руку своими «когда починишь? какой статус? что мне сказать клиенту?», то совершенно не тянет разбираться что ты, лично ты, наваял пол года назад в приступе внезапной гениальности, а хочется иметь максимально стандартные, простые, задокументированные и протестированные компоненты.

ugoday ★★★★★ ()
Ответ на: комментарий от mogwai

Puppet/Chef/Ansible/etc - способ обеспечить это.

На самом деле нет. Puppet+репозитарии артефактов — да. Но это сложно, дорого, подвержено ошибкам и не имеет преимуществ перед докером.

ugoday ★★★★★ ()
Ответ на: комментарий от winlook38

когда у него сбойнула среда эксплуатации

В докере, конечно, оно не может сбойнуть, ага.

Если сервис перезапустился и продолжает работать, возможно, ничего и не нужно делать

Без докера оно, конечно, так сложно реализуется…

Я вообще не понимаю как люди разделяют докер и баш.

рукалицо.жпг

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

Какую рутину без докера надо проверять вручную, а с докером не надо?

с намеком на то, что я не осилил.

Ну, какбе, да. KS анаконды+ансибля+файл с описанием ресурсов железки = готовая инфраструктура в один netboot. Напуркуа докер в проде?

mogwai ★★★★ ()
Ответ на: комментарий от ugoday

Системы управления конфигурациями - способ обеспечить это.

На самом деле нет. Вот система управления конфигурациями - да.

Браво.

Но это сложно, дорого, подвержено ошибкам

Зато докер просто, любой джамшут сделает, и никогда не ошибётся. Ага.

не имеет преимуществ перед докером.

Для джамшута - да. Ему проще с хаб.докер.ком образ скачать.

репозитарии

КЛБ! Как, йопрст, можно ошибиться в гласной находящейся под ударением?

mogwai ★★★★ ()
Последнее исправление: mogwai (всего исправлений: 1)
Ответ на: комментарий от mogwai

Судя по всему, причина ваших словесных упражнений довольно банальна — вы просто не сталкивались с проблемами определённого рода. И это пройдёт.

ugoday ★★★★★ ()
Ответ на: комментарий от ugoday

Как раз наоборот. Я имел проблемы, когда мне сервис на пару сотен строчек кода предлагали не в виде бинарник+systemd unit, а в доцкере на базе бубунты, когда у меня прод весь на центоси: «Я потом, вот тут обновлю, ты там перезапустишь, оно отсюда скачает, сюда положит и у тебя обновлённая версия будет. А проверить можно будет вот так, смотри как удобно!». А может ты сборку rpm в хуки добавишь, а у меня, когда надо, пакетный менеджер её скачает и обновит? А проверить мне мониторинг проверит, который с systemd умеет работать. И без всего этого вашего огорода.

проблемами определённого рода

Проблемы, которые в проде героически решаются докером, в студию!

mogwai ★★★★ ()
Последнее исправление: mogwai (всего исправлений: 1)
Ответ на: комментарий от mogwai

Вы, извините, бред несёте.

Проблемы, которые в проде героически решаются в проде, в студию!

Два года назад вы написали код на паппете. Всё работало. Вчера вам было нужно пересоздать сервер, однако паппет не сумел этого сделать. Сможете догадаться почему?

ugoday ★★★★★ ()
Ответ на: комментарий от mogwai

В докере, конечно, оно не может сбойнуть, ага.

А какая разница, в контексте того, что контейнер автоматически подымается на доступных ресурсах?

Без докера оно, конечно, так сложно реализуется

Без системы оркестрации. А контейнеры проще оркестрировать.

рукалицо.жпг

Покажи-ка какой-нибудь докерфайл, который ты написал.

Какую рутину без докера

Ну тут все гуру чрута. Пусть будет чрут в огромное количество вариантов преднастроенного окружения.

Напуркуа докер в проде?

Во-первых, свои фантазии обосновывай сам.
Во-вторых, требование k8s-френдли - это уже требования заказчика даже в консервативной сфере типа банковской. Это не мы его туда проталкиваем, это от нас требуют, а т.к., скорее всего, k8s навязан другими вендорами, нам приходится и с k8s помогать. Недавно, например, огребли проблем с OpenShift.
В-третьих, docker отлично втраивается в CI. Вот в CI мы его у себя встраиваем. Например, криво написанный софт, который не запускается в нескольких экземплярах, я контейнеризировал. Раньше коллеги масштабировали это приложение с помощью виртуальных машин.

winlook38 ★★ ()
Ответ на: комментарий от winlook38

Раньше коллеги масштабировали это приложение с помощью виртуальных машин.

Вот она, ЦА докера. Им лень сменить номера портов и прочие имена ресурсов, поэтому они будут городить виртуальные машины.

anonymous ()
Ответ на: комментарий от anonymous

Индустрия считает, что прогресс. Впрочем, не могу запретить колхозникам назвать бывший коровник ангаром и из фанеры и движка от списанной сноповязалки ваять свой ераплан на страх и зависть Боингу.

ugoday ★★★★★ ()
Ответ на: комментарий от ugoday

Вы, извините, бред несёте.

Не бред, а реальный разговор с разрабом у которого докер головного мозга.

Два года назад вы написали докер файл. Всё работало. Вчера вам было нужно пересоздать сервер, однако докер не сумел этого сделать.

FTFY

Сможете догадаться почему?

Смогу.

mogwai ★★★★ ()
Ответ на: комментарий от anonymous

Им лень сменить номера портов и прочие имена ресурсов

Вот она, ЦА баш-портянок. Какие нахрен порты? Какие конкретно ресурсы нужно менять? Это виндовое скомпилированное приложение, которое блокирует конкретный файл в системе.

Как ты вообще противопоставил использование скриптов и контейнеров? Это не взаимозаменяемые инструменты. Докер-контейнеры с виндовыми тулзами (и сриптами в докерфайле) у нас встроены в CI, в котором дохрена powershell-скриптоты.

Уползай обратно под кровать к своему прому.

winlook38 ★★ ()
Ответ на: комментарий от winlook38

А какая разница, в контексте того, что контейнер автоматически подымается на доступных ресурсах?

Я откуда знаю? Ты сам притащил «сбой среды эксплуатации».

Без системы оркестрации. А контейнеры проще оркестрировать.

  1. Чем проще?
  2. Контейнеры ≠ докер. Заметь, я ни где не говорил «контейнер», а ругаю исключительно докер в проде.

Покажи-ка какой-нибудь докерфайл, который ты написал.

Ты даже не понял, почему «рукалицо.жпг».
рукалицо.свг

Пусть будет чрут в огромное количество вариантов преднастроенного окружения.

Рутина то в чём?

Во-первых, свои фантазии обосновывай сам.

Ты о чём?)

Во-вторых, требование k8s-френдли - это уже требования заказчика … Это не мы его туда проталкиваем, это от нас требуют.. k8s навязан другими вендорами

Ну, т. е. тезис о джамшутов с золотым молотком ты не оспариваешь?

В-третьих, docker отлично втраивается в CI

Это исключает возможность встраивания всего, что !docker?

я контейнеризировал. Раньше коллеги масштабировали это приложение с помощью виртуальных машин.

Молодец. А докер тут зачем?

mogwai ★★★★ ()
Ответ на: комментарий от winlook38

Я думаю, дело в следующем. Есть учёный-монах, который может 20 лет создавать украшенный рукописный экземпляр библии, потому что это его способ служить Богу. А есть типография, которой нужно гнать тираж, потому что иначе гнать тираж будут конкуренты. И наши собеседники работают в типографии, а душой стремятся домой, в келью, припасть к святыне, вставать к заутренне, приступать к работе не иначе как с молитвой на устах, покоем на душе и радостью в сердце. А над тобой стоит прораб с план-графиком и поторапливает, быстрее, быстрее плевать на всё нужно тысячу экземпляров «анжелика в плену у вампирш-лесбиянок» до конца недели!

Так можно ли судить их за то, что вечером в пивной они ругают фабричные порядки?

ugoday ★★★★★ ()
Ответ на: комментарий от mogwai

Я откуда знаю?

Это вообще основная позиция хейтеров в данном треде.

Ты даже не понял

Ололо, я ему ничего не объяснял и он ничего не понял. Я не собираюсь разгадывать общие, ничего не значащие фразы с подтекстом.

Рутина то в чём?

В том, что это делается регулярно. Но откуда это знать тем, кто чрутится в вивариум раз в год.

Ты о чём?

Про докер в проде.

тезис о джамшутов с золотым молотком

Они везде есть.

Это исключает возможность встраивания всего, что !docker?

Докер-контейнеры с виндовыми тулзами (и сриптами в докерфайле) у нас встроены в CI, в котором дохрена powershell-скриптоты.

Свои фантазии о docker-only обосновывай сам.

А докер тут зачем?

Догадайся.

winlook38 ★★ ()
Ответ на: комментарий от winlook38

А: Докер нужен, чтобы исключить ошибки вызванные сбоем среды эксплуатации
Б: В докере сбой среды эксплуатации исключён?
А: Какая разница, если при необходимости сервис перезапустится сам?
Б: Ты притащил «сбой среды эксплуатации», ты и думай про «разницу».
А: Это вообще основная позиция хейтеров в данном треде.

Браво.

Ололо, я ему ничего не объяснял и он ничего не понял

Тебе требуется объяснение, что кроме «писать на баше» и «городить докер» существует существуют и более подходящие инструменты, часть которых я выше уже приводил? Совсем бида.

В том, что это делается регулярно.

У тебя тот же ansible-playbook кто-то отбирает?

Про докер в проде.

Ты выше сам себе противоречишь. Ты уж определись, у тебя заказчики доцкер требуют и тебе проще в нём, чтобы не париться, или ты заказчикам отдаёшь не завёрнутый в докер сервис?

Они везде есть.

Поэтому мы будем говорить, что выпирающий вровень поколодник - это норма?

Свои фантазии о docker-only обосновывай сам.

Т упрт? Где я говорил про «докер онли», давай пруфлинк.

Догадайся.

Я догадался: потому что ты осилил докер, а по-другому учиться не хочешь?

mogwai ★★★★ ()
Ответ на: комментарий от ugoday

Да весь тред сквозит болью тех, кто осознал, что их гуру-знания теперь не ноу-хау, а повседневность, реализуемая другими инструментами. Именно поэтому, я думаю, они противопоставляют скрипты и использование контейнеров. Ну таким не место в индустрии, где порицается джоб-секьюрити, а километровые баш-портянки вместо лаконичного докерфайла воспринимаются как обфускация. Я же говорю, спасибо всем им за то, что я становлюсь более ценным специалистом на рынке.

winlook38 ★★ ()