Анон, расскажи, в чем польза docker для программистов?
>>1174016 (OP)проект собирается в одну команду в терминале
>>1174071какого рода проект?Сервер из нескольких процессов или что?
>>1174071Куча библиотек, настроенная СУБД и Web-сервер передается заказчику одним контейнером?Разработчик не пишет инсталятор или скрипты установки? Вместо этого - одна-единственная команда установки контейнера?
Чтобы понять смысл докера нужно понять смысл докера.Тогда все станет на свои места.
>>1174215Но зачем, если можно просто взять и написать скрипт на баше?
1. Докер убирает зависимость от дистрибутива.2. Докер пакует приложение в контейнеры, которые можно удобно скейлить: 5 контейнеров с БД, 8 контейнеров с приложением, 3 контейнера для внутренней очереди задач, 1 контейнер для мониторинга, 2 контейнера для redis/memcached. При этом всё завязывание адресов-портов происходит почти полностью автоматически.3. Докер-компоуз позволяет в одну команду поднять продакшен у себя на машине, не устанавливая ничего самому, кроме этого самого докера.
Спасибо, аноны!
я не понимаю как пользоваться докер. че за контейнеры. что это? Как выгдядит запуск, из терминала, или как?
>>1174987Контейнер это такая недовиртуалка без init процесса и без собственного ядра. Конкретно в терминологии докера есть image образ, а есть container запущенный инстанса образа.
а Vagrant тогда что? или это для винды аналог?
>>1175180Вагрант это обёртка для виртуалбокса, позволяющая удобно обмениваться и скачивать образы. Докер по сути тоже не только контейнеры, но и вот эта инфраструктура с обменом образами.
>>1174016 (OP)1) Можешь поднимать миллион технологий одновременно на одной машине, не засирая ОС. Я на своём личном маке поднял несколько разных БД, несколько проектов на нескольких языках, но при этом я не засрал себе систему установкой этого говна.2) Докер — единая шина для взаимодействия админов и прогеров. Я говорю «я сделяль проект». В обычных условиях мне надо админу рассказывать, чо надо поставить на сервер, какие зависимости, как их установить, как настроить логгирование, и т д.В случае с докером я просто обернул свой проект в докер, и даю его админу. Его в душе не ебёт, чо там внутри, он просто деплоит и всё. А если надо сделать роллбэк, он просто выкатывает предыдущий контейнер. Мгновенно.3) Docker-compose позволяет делать систему из нескольких контейнеров, которые одной командой разворачиваютсяНу короче, это просто по сути унификация АПИ общения компонентов системы. Только в данном случае компонентами являются разные среды и зависимости.
>>1174473Если этот скрипт не зависит ни от версии ОС. ни от версии ПО, ни от структуры файловой системы, ни от прав на разные тупые файлы, ни от переменных среды, да ещё вдобавок после его запуска у меня не засрётся система и ничего не нужно будет удалять, то тогда да, можно и скрипт на баше.>>1174016 (OP)Докер -- очень удобная вещь, позволяет здорово сэкономить силы, не растрачивая их на разработку инфраструктуры. Хотя немного обидно что в современном мире берётся ВПС под КВМ (или что там сейчас используют), наверх ставят докер, а потом ещё используют интерпретируемый язык, запускающий свою вм, итого получается минимум тройная виртуализация.
>>1175187>получается минимум тройная виртуализацияТак это же и есть те самые пресловутые levels of abstraction. Это разделение обязанностей подсистем по зонам ответственности. Архитектура софта дошла до этого ещё лет 40 назад, а инфраструктура вот только поспевает потихоньку. Ящитаю это лютый успех. Даёшь больше виртуализации богу виртуализации.Кроме того, с каждым кругом спирали погружения в виртуализацию всё снижается оверхед. Докер уже вообще почти с пренебрежимо малым оверхедом.Прикольно будет если мы дорастём до сборок полных машин таких, что будет много слоёв, но все только нужные.
>>1175187Нормальные люди ставят голую CoreOS и накидывают туда докеров.
>>1174016 (OP)>в чем польза docker для программистовНи в чем, для программистов от него один вред. Какая-то небольшая польза от него есть релиз-инженерам и SRE-обезьянам, но это спорно.
ну вот допустим питон. он ищет системные модули по адресу /user/bin докер в это сможет? А например я извращенец и хочу в шелл инвайронмент зашить глобальную переменную на на текущую дерикторию скриптов. она зашьется? как я понимаю докер избавляет от необходимости отслеживать куда юзер положил исходники/бинарники проекта? А что на счет юникс-сокетов? Они с докером дружат?
>>1175275че блять? на каком языке ты пишешь?
>>1175187>докерДокер на линукс это просто интерфейс к chroot и cgroups, он ничего не виртуализирует.
>>1175276на коричневом1 - сможет ли питон найти системные модули по дефолтному адрессу рут/юзер/хуюзер/бин2 - юникс-сокеты работают если докер деплоит проект?3 - глобальные переменные shell доступны для записи?
Раз уж тут стартовал поясни-за-новомодную-технологию тред, то реквестую у знающего анона инфы и про Kubernetes. Что это за штука и как применяется?
>>1175278>Докер на линукс это просто интерфейс к chroot и cgroupsК namespaces и cgroups, тогда уже.>он ничего не виртуализируетВиртуализирует ресурсы ОС: точки монтирования, ID процессов, сетевой стек и т.д.>>1175376>Что это за штукаОблачный оркестратор контейнеров.> как применяется? По назначению.
>>11752811. Внутри контейнера всё работает часто прямо от рута. Можешь даже virtualenv не делать.2. Юникс сокеты нельзя экспоузить. Да и смысл в них? Докер заточен под скейлинг, а значит разные контейнеры могут легко оказаться на разных машинах.3. Есть целая директива ENV для зашивки любых переменных окружения в образ.
>>1175376Могу сказать хуйню, но эта штука пыталась быть таким универсальным инструментом развёртывания на всех возможных облаках сразу: гугль, амазон, etc. Без vendor lock-in.
>>1174016 (OP)Хуйня, под виндовс не работает.
>>1174016 (OP)Хуйня на постном масле, очередной инструмент, который убивает ваше время. Можете сказать, что изучи и будет всё быстро и легко, так можно сказать про что угодно, если вы изучили инструменты, с которыми работаете, зачем вам докер? В общем, очередная модная хрень, которая воистину не нужна.
>>1175472ну почему же. Вот передо мной стоит выбор. Учить баш или учить докер. как правильно тут сказали у баша дохера всякой фигни которая сможет не сработать при деплое приложения на чужой комп, например права доступа и делее и далее
>>1174016 (OP)Чисто для программиста польза небольшая - это скорее для админов. Ведь докер по сути недовиртуалка, которая реюзает ядро основной системы. И сама запускается без каких-либо сервисов и нужно хорошо так поебаться, чтобы на нём запустить хотя бы systemd.Эту хуйню можно использовать для тестирования, например. Особенно если у вас там какая-нибудь логика, которая наполовину состоит из какого-нибудь жабовского кода, а наполовину из ансибла, который на удалённых машиннах что-нибудь мутит. То тогда можно эти удалённые машины симулировать докером и потом в тесте проверить, в правильном состоянии машины или нет.Только опять же это гемор - имиджи докера пиздец какие кастрированные. Ну, то есть там всё есть, но это "всё" надо вручную запускать.Короче чтобы работать нормально с докером, нужно быть админом, что блядь ой как не просто инб4 девопс макаки
>>1175462>>1175472>>1175487Июни понабежали. Красота.
>>1174016 (OP)кстоти, если это сорт оф вм, как обновлять в нем софт?
>>1175604Собирать новую версию образа. Образы обычно собираются с помощью Dockerfile, который по сути содержит директивы и башскрипты, чтобы каждый раз ручками не ходить внутрь (хотя технически не запрещается сделать всё руками и затем docker commit).
>>1175451k8s это и есть vendor lock-in.
>>1175725В каком месте?
>>1175725bash это тоже вендор лок-ин. И Java.
А на винде с помощью докера можно получить окружение как в линуксе без вагранта?
Докер был создан чтобы у гошников было хоть что-то, о чем можно было бы рассказывать на конференциях.
>>1175376Технология, которая позволяет развернуть кластер и удобно скейлить контейнеры и настраивать между ними взаимодействие. Можно намутить свою микросервисную архитектуру.
докер очень удобная штука, но в проде я с ним наебался и так и сяк - необходим хороший уровень понимания и знание нюансов, впрочем как и с другими подходами
>>1174016 (OP)Хороший тред. Буду тут спрашивать про докер по мере его изучения. И сразу очень нубские и актуальные вопросы, на которые я не нашёл ответа в доках.Так вот, допустим я делаю простой сайт, поправил в пхп файле что-то в своём любимом редакторе (например VS Code) и хочу посмотреть на результат. Без докера у меня всё - апач, пхп, мускуль, файлы проекта - установлено на моей локальной машине на реальном железе и я просто после правок перезагружаю страницу в браузере и смотрю что изменилось.Как этот процесс происходит в случае с докером? Допустим все эти сущности - апач, пхп, мускуль, файлы проекта - находятся теперь внутри контейнера. Как мне править файлы внутри контейнера? Я могу достучаться туда своим любимым редактором? Или мне нужно зайти в контейнер и править всё в каком-нибудь виме? Или мне нужно пересобирать контейнер после любой правки? Или копия проекта со всей хуйней должна быть всё равно установлена локально на реальном железе и только после всех правок, когда результат меня удовлетворит, я обновляю контейнер с проектом? Но в чём в этом случае преимущество использовать докер? Докер ведь создан был в том числе для того, чтобы можно было удобно работать с зоопарком версий различного софта (базы данных, веб-сервера, какие-нибудь веб-фреймворки) и в том числе не засирать систему множественными установками этих самых версий.Я пока не понимаю. Поясните, пожалуйста, как у вас выглядит рабочий процесс с использованием докера. Лучше на примере какого-нибудь простого сайта или сервиса.
>>1174215>Разработчик не пишет пишет какой-то один разраб, а все остальные разворачивают проекты одной командой. минус докера в том, что собирается долго и когда пушишь ветку на удаленный сервер то докер билдится пиздец как долго.
>>1174215точнее один разраб пишет .sh файл, где набор башевских комманд докера, которые все эти контейнеры и создают с яп и базами и node modules и редисом и т.п.т.е. тебе больше локально ничего самому не надо устанавливать, настраивать и разворачивать.
>>1179780Пошел нахуй по пайплайну, пёс.
>>1179780>>1179780Простейший подход - это монтировать директорию с исходным кодом с в контейнер с помощю bind volume. Вполне работает.Ну или использовать докер только для сервера и CI.
Здравствуйте, уважаемые господа.Где можно доступно прочитать про кеширование в докере и то как им управлять с целью ускорить сборки контейнеров?Суть такова - есть один CI, и на этом CI в докер контейнере билдится репа одного проекта. Проект состоит из довольно большого количества 3rd party кода (всё на плюсах и Cmake) и небольшого, по сравнению с ним, количества нашего кода. В контейнере происходит что-то типа "склонировать репу - сбилдить - прогнать тесты". Проблема в том что эта ебаная гора 3rd party кода билдится на каждый коммит и мне уже не доставляет ждать по 20 минут на билд.Как можно разбить вышеописанную процедуру билда на части так, чтобы билд сёрдпати кода кешировался и не повторялся из раза в раз?На что именно смотрит докер при кешировании - на выполняемую команду или на изменение фс?Помогите, заебался ждать вечность после каждого коммита. С меня интернеты.
>>1179800>Простейший подход - это монтировать директорию с исходным кодом с в контейнер с помощю bind volume. Вполне работает.КОроче как я понял всё равно нужно устанавливать всё на реальное железо, а докер нужен только для облегчения переноса всей хуйни в другое окружение?
Пасаны, убунту1604 можно запустить на какой-нибудь центосе 6-7? Какие там вообще требования к совместимости версий ядер? У убунты же 4, а у цента максимум 3.
>>1179802Как вариант собрать свои зависимости у себя на машине как статическую библиотеку и добавить прямо в образ контейнера для билда через COPY / ADD, пусть CI их статически линкует с вашим кодом во время сборки. Когда нужно будет поменять что-то в зависимостях пересоберешь образ для CI full disclosure: я не знаю крестов и не знаю как работает cmake
>>1179780Раздели mysql и все остальное по разным образам: mysql в своем контейнере, пыха в своем. Код в образ добавишь через COPY / ADD, не через вольюм или, боже упаси, vcs. Этот образ ты сможешь задеплоить в продакшн. Для разработки тебе нужно запустить его и контейнер с mysql (одновременно) у себя на машине, проще всего через docker compose. Также через конфигурацию docker compose смонтируешь локальный фолдер с кодом в контейнер как вольюм, тогда все твои мелкие правки будут отображаться в контейнере, запущенном у тебя на машине через docker compose.
Прочитал тред и понял, что это что-то ненужное, призванное усложнить как разработку, так и использование. Через пять это превратится в помойку, подобную ноде по ненужности и обилию мусора. Нахуй так жить?
>>1179825> javascript-долбоеб рассуждает о нормальных технологиях:)
>>1179803Можешь сделать контейнер с .sh файлом, который например из гита будет подтягивать новые файлы. Или как тебе - реальную директорию вмаунтить с файлами. А все твои пхп будут в докере.
>>1179812А что там с логами и бекапами? Куда они пишутся?
>>1179919В нормально сделанном образе логи приложения должны попадать в stdout контейнера (то что тебе падает в консоль когда запускаешь docker или docker compose). Например в стандартном образе для nginx есть симлинк с access.log / error.log в /dev/stdout / dev/stderrБекапы – зависит от того где ты будешь крутить контейнер. Сейчас подоспеют девопсы 80 лвл и скажут что базу в контейнерах держать низя
>>1179917Рубрика "Вредные советы"
Как это происходило в джаве: появление серверов приложений с кучей возможностей внутри, унификация этих серверов приложений, чтобы файл с программой можно было запускать на любом. Отказ от манипуляций внутри операционной системы: один раз настраивается сервер приложение и бд и больше это никто не трогает.Настройка партиционирования при помощи мышки.И вот сейчас прогресс пошел в обратную сторону: мода на spring boot, который требует манипуляций внутри ОС, отказ от серверов приложений и стандартизации. Разработчикам снова нужен рутовый доступ к осИ вот видимо чтобы с этим совладать, появился докер. Придумываем себе проблему, а потом героически с ней боремся
>>1179927Посоветуй полезный совет
>>1179926>В нормально сделанном образе логи приложения должны попадать в stdout контейнераПИЗДОС. А если логфайлов больше одного?
>>1179929Потому что все накушались серверов приложений и ебучего j2ee. Все хотят писать простые программки и ранать их легко где угодно, а не настраивать монструозный JBoss, только для того, чтобы обработать json запрсо.
>>1179926> зависит от того где ты будешь крутить контейнер1) база2) загруженные картинки и документы
>>1179933>Все хотят писать простые программки и ранать их легко где угодноС ложением хуя на секьюрити, логи, доступ к базе, стандартизацию
>>1179936Да, прикинь. Не всем нужно ракеты в космос запускать.
>>1179932Сделаешь больше одного симлинка. Охуеть, да?
>>1179934Ну а как крутиться контейнер в проде? Кубер там у тебя или что?Путь с данными в базе и путь к картинкам / документам монтируются как вольюмы. Как ты будешь бекапить эти вольюмы это уже не про докер.
>>1179943Логфайлы разные. И данные в них разные. Так часто бывает,прикинь
>>1179950ELK или Fluentd в помощь
>>1179944Значит для каждой машины нужны свои настройки?
>>1179950Например?
>>1179952Очередные костыли для решения созданных докером проблем?
>>1179956Лог простой, лог с ошибками, лог с платежами, лог с общением с внешними системами
>>1179960Я бы сделал так: ошибки в stderr, все остальное в stdout, настроил бы логгер чтобы он дописывал пометку из какого лога какое сообщение в текст сообщения лога ("18.01.2018 20:00 [PAYMENTS] [INFO] бла-бла-бла" ну ты понел), настроил бы logstash / fluentd чтобы они парсили сообщения и вынимали эту пометку, смотрел бы логи через кибану и фильтровал по пометке.
>>1179957>Очередные костыли для решения созданных докером проблем?define "костыли"Костыль – инструмент или абстракция которая тебе лично не по нраву
>>1179976>define "костыли">>1179971>остальное в stdout, настроил бы логгер чтобы он дописывал пометку из какого лога какое сообщение в текст сообщения лога ("18.01.2018 20:00 [PAYMENTS] [INFO] бла-бла-бла" ну ты понел), настроил бы logstash / fluentd чтобы они парсили сообщения и вынимали эту пометку, смотрел бы логи через кибану и фильтровал по пометке.
>>1179980Как ты предлагаешь сделать (с докером или без докера)? Ходить на сервер по ssh и смотреть логи через screen / tmux?Ок, теперь представь что у тебя не один сервис, а хотя бы три.
>>1179981Три сервиса = три команды
>>1179985Три сервиса по четыре логфайла каждый дают 12 командКак бы ты не было, с докером так тоже можно. Никто не мешает залезть в контейнер через ssh и docker exec / whatever и посмотреть.
Откуда тут столько эдаких ПРОГРЕССИВНЫХ экспертов повылазило? Вы там что, все работаете в командах, где все потные чуваки и следят за последними трендами? И никто не препирается: ни команда, ни начальство, что мол НИНУЖНА?
>>1179980ой бля, высасываешь проблему из пальца. Замапь волум на реальный диск и пусть туда складываются логи. В чем проблема то? Это сэйм шит, что и без докера. Тебе нормальное решение предложили, ELK это вообще почти стандарт.
>>1179988>запускать ссх в докере)
>>1179989Просто не сидим на жопе ровно и не мнем говнолегаси в ведре. Я вообще в стартапе - тут модная технология на модной техмнологии. каттинг эдж.
>>1179992>я тупой и читаю жопой)
>>1179989Ну да. Так сейчас во всех нормальных компаниях и командах. Раньше работал, где орали НИНУЖНА, но дропнул их и сменил работу и теперь обмазываемся докерами, кубернетами, микросервисом и реактивщиной.
>>1179989ну у нас лид только тем и занимается, что докер настраивает. код вообще не пишет.хуле плотют - значит можно делать
>>1180298Этот выбор мыкросервисов и кубернетиса хоть оправдан? помимо удовлетворения интереса погроммистов
>>1180380Да.Можно к хуям уволить админов и их работу перекинуть на программистов, назвав это девом-псом, естественно не увеличив зарплату.
>>1180387Ещё в стартапах хорошо, когда нету денег на штаб аититоты разной квалификации.
>>1180431Страховая компания.
Разработай дома на арче, арендуй впс с почиканой убунтой или центосью и охуей выкатывать впрод. Особенно со сраным питоном, где от диструбутива зависит 3-ий питон у тебя по дефолту python или python3, а если тебе нужна актуальная версия, а в дистре уже устаревшее говно мамонта, то начинаются жопоебля с плясками, бляяя как бомбит от этого говна, боже храни королеву и докер, аминь!
>>1181828> Разработай дома на арче, арендуй впс с почиканой убунтойАрендуй VPS с арчем, что может быть проще?
>>1182694арендовал ты арч, потребовалось срочно выкатить прод под центос. твои действия?
>>1182767Сосу черный хуй властелина тьмы, ведь я же арчешкольнег.
>>1182782>я же арчешкольнегно зачем прибедняться, если всегда можно сделать пакман -Суй задеплоить нужный образ
>>1174071mvn clean install?
>>1182782Видел картинку small pinus? Как думаешь, что я увидел на твоей картинке?
>>1179926>Сейчас подоспеют девопсы 80 лвл и скажут что базу в контейнерах держать низяПочему? Слишком высокий оверхерд? Можно же файлики контейнера хранить в файловой системе хоста, по этому шансы проебать данные вроде как не повышаются.
Как же я блядь охуел с того, что в докере не работает крон.Ну точнее как. Только один процесс на контейнер, если нет, начинаются какие-то анальные пляски и пердолинг.Я же просто пхп-макака, мне всего ничего надо: apache/nginx(похуй), php, mysql, cron, да еще пара приблуд.Еще вопрос про базы данных в докере. Что если хайлоад?Как в докере замутить шардинг?Ну и как организовать крон?Идеология докера говорит, что все говно должно быть по разным контейнерам.Если я засуну крон в отдельный контейнер.ВНЕЗАПНО, оказалось, что если я сделал volume с хоста в какой-то контейнер, то я уже не могу этот же волум забиндить в другой контейнер.Плюс крон будет крутиться в отдельном контейнере со своим маня-миром и даже если бы я сделал общие файлы у двух контейнеров, то что бы этот крон вызывал? Как он может запустить прогу на другом контейнере?
>>1184045Ты попробуй ещё какую-нибудь убунту 18 запусти на центосе 7 с ядром из прошлого века.
>>1183990Перестраховка на случай, если система оркестровки захочет перекинуть базу на другой сервер кластера.
>>1184045крон из основной оси, запуская нужные контейнеры? :3
>>1184052Какая разница если использовать Kubernetes volumes? Плюс можно жестко привязать конкретные поды к конкретной ноде или серии нод.
>>1175450>Юникс сокеты нельзя экспоузитьПиздёжь, можно юникс сокет положить в общий volume, всегда так делаю.
>>1185596Сука вчера перед сном как раз думал про эту хуебень. В итоге пришёл к выводу, что написать на баше скрипт, который скачивает репозитории а потом создаёт директорию для юникс сокета всё же менее геморойней чем вкатываться в докер. Единственное что реально сложно сделать на баше, это проверить наличие пакетов, версий языка и скачать, проапдейтить в случае необходимости и вообще написать эдакую программу запуска приложения на неизвестной ос сложно очень. Поэтому походу всё придётся вкатываться в докер.
>>1185670>на башеПожалуйста, не надо.
>>1185691Чому?
>>1185703Just stop.
>>1185707ну признай что для инженеров баш нужен, настройка среды, всяких линкеров ебучих
>>1185670Братюнь, баш и докер - не конкуренты, это вполне ортогональные инструменты. Докер-образа с вероятностью 146% включают в себя баш-магию, вот, посмотри, например, на официальный образ постгрешечки: https://github.com/docker-library/postgres/blob/f7f1e59c55bcce36cfbe7ab4604f439eb8721611/10/alpine/docker-entrypoint.sh
>>1185712Нееееееет. Нет. Нет нет нет нет нет. Нет.
>>1185735Докерфайл по сути на шелле пишется.
>>1174016 (OP)Создание новых рабочих мест. Да-да, уже появляются докер-архитекторы.
Сколько месяцев в среднем уходит на изучение докера?
>>11891760.5
Понабежали "специалисты". То у них от докера пользы нет, то у них докер - это внезапно виртуальная машина (ага, и chroot - это тоже виртуальная машина по такой логике). Дебилы, блять.
>>1189268Ну ты-то у нас всё знаешь, молодец.
Никто не знает, почему у нас контейнер на проде падает стабильно каждое воскресенье утром? Jenkins
>>1174071>>1182930npm install && npm start
>>1193947что Jenkins? Build periodically кто-то поставил?
>>1189176неделя без orchestration
>>1179786>минус докера в том, что собирается долго и когда пушишь ветку на удаленный сервер то докер билдится пиздец как долго. Так чисти промежуточные файлы сразу, блеать.
>>1194024Крутятся билды на Jenkins.Спасибо, погуглю эти слова в проекте.
>>1194024Нет, он не билдится с периодичностью, а именно падает контейнер, то есть висел сайт и в воскресенье утром начинает выдавать 500 ошибку. Такое ощущение, что он живет только на неделе, когда билды пушишь.
>>1174016 (OP)Ни в чем. Оставь это дело девОпс. Задача программиста пилить код, а не заботится о том, в какой среде он будет работать.
>>1194781>дев опсЗначение знаешь?
>>1179786> минус докера в том, что собирается долго и когда пушишь ветку на удаленный сервер то докер билдится пиздец как долго.Если правильно написать докерфайл, то он билдится будет за секунды, так как каждая команда в докерфайле это отдельный слой и при каждом последующем билде имеджа если не указывать --no-cache ключ, докер будет сверять хэши для каждого слоя (команды) и не будет выполнять команду из докерфайла покуда не увидит различие хэша, и только когда хэш изменится, то доке с того степа начнет апдейтить имедж.
>>1194781Задача девопса деливерить докеримеджи, а не создавать их.
>>1179929Докер нуженА) Для изоляции приложенияБ) Для экономии ресурсов железа
>>1179802>>1195475