>>1174071 Куча библиотек, настроенная СУБД и Web-сервер передается заказчику одним контейнером? Разработчик не пишет инсталятор или скрипты установки? Вместо этого - одна-единственная команда установки контейнера?
1. Докер убирает зависимость от дистрибутива. 2. Докер пакует приложение в контейнеры, которые можно удобно скейлить: 5 контейнеров с БД, 8 контейнеров с приложением, 3 контейнера для внутренней очереди задач, 1 контейнер для мониторинга, 2 контейнера для redis/memcached. При этом всё завязывание адресов-портов происходит почти полностью автоматически. 3. Докер-компоуз позволяет в одну команду поднять продакшен у себя на машине, не устанавливая ничего самому, кроме этого самого докера.
>>1174987 Контейнер это такая недовиртуалка без init процесса и без собственного ядра. Конкретно в терминологии докера есть image образ, а есть container запущенный инстанса образа.
>>1175180 Вагрант это обёртка для виртуалбокса, позволяющая удобно обмениваться и скачивать образы. Докер по сути тоже не только контейнеры, но и вот эта инфраструктура с обменом образами.
>>1174016 (OP) 1) Можешь поднимать миллион технологий одновременно на одной машине, не засирая ОС. Я на своём личном маке поднял несколько разных БД, несколько проектов на нескольких языках, но при этом я не засрал себе систему установкой этого говна. 2) Докер — единая шина для взаимодействия админов и прогеров. Я говорю «я сделяль проект». В обычных условиях мне надо админу рассказывать, чо надо поставить на сервер, какие зависимости, как их установить, как настроить логгирование, и т д.
В случае с докером я просто обернул свой проект в докер, и даю его админу. Его в душе не ебёт, чо там внутри, он просто деплоит и всё. А если надо сделать роллбэк, он просто выкатывает предыдущий контейнер. Мгновенно.
3) Docker-compose позволяет делать систему из нескольких контейнеров, которые одной командой разворачиваются
Ну короче, это просто по сути унификация АПИ общения компонентов системы. Только в данном случае компонентами являются разные среды и зависимости.
>>1174473 Если этот скрипт не зависит ни от версии ОС. ни от версии ПО, ни от структуры файловой системы, ни от прав на разные тупые файлы, ни от переменных среды, да ещё вдобавок после его запуска у меня не засрётся система и ничего не нужно будет удалять, то тогда да, можно и скрипт на баше.
>>1174016 (OP) Докер -- очень удобная вещь, позволяет здорово сэкономить силы, не растрачивая их на разработку инфраструктуры. Хотя немного обидно что в современном мире берётся ВПС под КВМ (или что там сейчас используют), наверх ставят докер, а потом ещё используют интерпретируемый язык, запускающий свою вм, итого получается минимум тройная виртуализация.
>>1175187 >получается минимум тройная виртуализация
Так это же и есть те самые пресловутые levels of abstraction. Это разделение обязанностей подсистем по зонам ответственности. Архитектура софта дошла до этого ещё лет 40 назад, а инфраструктура вот только поспевает потихоньку.
Ящитаю это лютый успех. Даёшь больше виртуализации богу виртуализации.
Кроме того, с каждым кругом спирали погружения в виртуализацию всё снижается оверхед. Докер уже вообще почти с пренебрежимо малым оверхедом.
Прикольно будет если мы дорастём до сборок полных машин таких, что будет много слоёв, но все только нужные.
ну вот допустим питон. он ищет системные модули по адресу /user/bin докер в это сможет? А например я извращенец и хочу в шелл инвайронмент зашить глобальную переменную на на текущую дерикторию скриптов. она зашьется? как я понимаю докер избавляет от необходимости отслеживать куда юзер положил исходники/бинарники проекта? А что на счет юникс-сокетов? Они с докером дружат?
>>1175276 на коричневом 1 - сможет ли питон найти системные модули по дефолтному адрессу рут/юзер/хуюзер/бин 2 - юникс-сокеты работают если докер деплоит проект? 3 - глобальные переменные shell доступны для записи?
>>1175278 >Докер на линукс это просто интерфейс к chroot и cgroups К namespaces и cgroups, тогда уже. >он ничего не виртуализирует Виртуализирует ресурсы ОС: точки монтирования, ID процессов, сетевой стек и т.д.
>>1175376 >Что это за штука Облачный оркестратор контейнеров. > как применяется? По назначению.
>>1175281 1. Внутри контейнера всё работает часто прямо от рута. Можешь даже virtualenv не делать. 2. Юникс сокеты нельзя экспоузить. Да и смысл в них? Докер заточен под скейлинг, а значит разные контейнеры могут легко оказаться на разных машинах. 3. Есть целая директива ENV для зашивки любых переменных окружения в образ.
>>1175376 Могу сказать хуйню, но эта штука пыталась быть таким универсальным инструментом развёртывания на всех возможных облаках сразу: гугль, амазон, etc. Без vendor lock-in.
>>1174016 (OP) Хуйня на постном масле, очередной инструмент, который убивает ваше время. Можете сказать, что изучи и будет всё быстро и легко, так можно сказать про что угодно, если вы изучили инструменты, с которыми работаете, зачем вам докер? В общем, очередная модная хрень, которая воистину не нужна.
>>1175472 ну почему же. Вот передо мной стоит выбор. Учить баш или учить докер. как правильно тут сказали у баша дохера всякой фигни которая сможет не сработать при деплое приложения на чужой комп, например права доступа и делее и далее
>>1174016 (OP) Чисто для программиста польза небольшая - это скорее для админов. Ведь докер по сути недовиртуалка, которая реюзает ядро основной системы. И сама запускается без каких-либо сервисов и нужно хорошо так поебаться, чтобы на нём запустить хотя бы systemd. Эту хуйню можно использовать для тестирования, например. Особенно если у вас там какая-нибудь логика, которая наполовину состоит из какого-нибудь жабовского кода, а наполовину из ансибла, который на удалённых машиннах что-нибудь мутит. То тогда можно эти удалённые машины симулировать докером и потом в тесте проверить, в правильном состоянии машины или нет. Только опять же это гемор - имиджи докера пиздец какие кастрированные. Ну, то есть там всё есть, но это "всё" надо вручную запускать. Короче чтобы работать нормально с докером, нужно быть админом, что блядь ой как не просто инб4 девопс макаки
>>1175604 Собирать новую версию образа. Образы обычно собираются с помощью Dockerfile, который по сути содержит директивы и башскрипты, чтобы каждый раз ручками не ходить внутрь (хотя технически не запрещается сделать всё руками и затем docker commit).
>>1175376 Технология, которая позволяет развернуть кластер и удобно скейлить контейнеры и настраивать между ними взаимодействие. Можно намутить свою микросервисную архитектуру.
докер очень удобная штука, но в проде я с ним наебался и так и сяк - необходим хороший уровень понимания и знание нюансов, впрочем как и с другими подходами
>>1174016 (OP) Хороший тред. Буду тут спрашивать про докер по мере его изучения. И сразу очень нубские и актуальные вопросы, на которые я не нашёл ответа в доках.
Так вот, допустим я делаю простой сайт, поправил в пхп файле что-то в своём любимом редакторе (например VS Code) и хочу посмотреть на результат. Без докера у меня всё - апач, пхп, мускуль, файлы проекта - установлено на моей локальной машине на реальном железе и я просто после правок перезагружаю страницу в браузере и смотрю что изменилось. Как этот процесс происходит в случае с докером? Допустим все эти сущности - апач, пхп, мускуль, файлы проекта - находятся теперь внутри контейнера. Как мне править файлы внутри контейнера? Я могу достучаться туда своим любимым редактором? Или мне нужно зайти в контейнер и править всё в каком-нибудь виме? Или мне нужно пересобирать контейнер после любой правки? Или копия проекта со всей хуйней должна быть всё равно установлена локально на реальном железе и только после всех правок, когда результат меня удовлетворит, я обновляю контейнер с проектом? Но в чём в этом случае преимущество использовать докер? Докер ведь создан был в том числе для того, чтобы можно было удобно работать с зоопарком версий различного софта (базы данных, веб-сервера, какие-нибудь веб-фреймворки) и в том числе не засирать систему множественными установками этих самых версий. Я пока не понимаю. Поясните, пожалуйста, как у вас выглядит рабочий процесс с использованием докера. Лучше на примере какого-нибудь простого сайта или сервиса.
>>1174215 >Разработчик не пишет пишет какой-то один разраб, а все остальные разворачивают проекты одной командой. минус докера в том, что собирается долго и когда пушишь ветку на удаленный сервер то докер билдится пиздец как долго.
>>1174215 точнее один разраб пишет .sh файл, где набор башевских комманд докера, которые все эти контейнеры и создают с яп и базами и node modules и редисом и т.п. т.е. тебе больше локально ничего самому не надо устанавливать, настраивать и разворачивать.
Здравствуйте, уважаемые господа. Где можно доступно прочитать про кеширование в докере и то как им управлять с целью ускорить сборки контейнеров? Суть такова - есть один 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.
Прочитал тред и понял, что это что-то ненужное, призванное усложнить как разработку, так и использование. Через пять это превратится в помойку, подобную ноде по ненужности и обилию мусора. Нахуй так жить?
>>1179803 Можешь сделать контейнер с .sh файлом, который например из гита будет подтягивать новые файлы. Или как тебе - реальную директорию вмаунтить с файлами. А все твои пхп будут в докере.
>>1179919 В нормально сделанном образе логи приложения должны попадать в stdout контейнера (то что тебе падает в консоль когда запускаешь docker или docker compose). Например в стандартном образе для nginx есть симлинк с access.log / error.log в /dev/stdout / dev/stderr Бекапы – зависит от того где ты будешь крутить контейнер. Сейчас подоспеют девопсы 80 лвл и скажут что базу в контейнерах держать низя
Как это происходило в джаве: появление серверов приложений с кучей возможностей внутри, унификация этих серверов приложений, чтобы файл с программой можно было запускать на любом. Отказ от манипуляций внутри операционной системы: один раз настраивается сервер приложение и бд и больше это никто не трогает. Настройка партиционирования при помощи мышки.
И вот сейчас прогресс пошел в обратную сторону: мода на spring boot, который требует манипуляций внутри ОС, отказ от серверов приложений и стандартизации. Разработчикам снова нужен рутовый доступ к ос
И вот видимо чтобы с этим совладать, появился докер. Придумываем себе проблему, а потом героически с ней боремся
>>1179929 Потому что все накушались серверов приложений и ебучего j2ee. Все хотят писать простые программки и ранать их легко где угодно, а не настраивать монструозный JBoss, только для того, чтобы обработать json запрсо.
>>1179960 Я бы сделал так: ошибки в stderr, все остальное в stdout, настроил бы логгер чтобы он дописывал пометку из какого лога какое сообщение в текст сообщения лога ("18.01.2018 20:00 [PAYMENTS] [INFO] бла-бла-бла" ну ты понел), настроил бы logstash / fluentd чтобы они парсили сообщения и вынимали эту пометку, смотрел бы логи через кибану и фильтровал по пометке.
>>1179976 >define "костыли" >>1179971 >остальное в stdout, настроил бы логгер чтобы он дописывал пометку из какого лога какое сообщение в текст сообщения лога ("18.01.2018 20:00 [PAYMENTS] [INFO] бла-бла-бла" ну ты понел), настроил бы logstash / fluentd чтобы они парсили сообщения и вынимали эту пометку, смотрел бы логи через кибану и фильтровал по пометке.
>>1179980 Как ты предлагаешь сделать (с докером или без докера)? Ходить на сервер по ssh и смотреть логи через screen / tmux? Ок, теперь представь что у тебя не один сервис, а хотя бы три.
Откуда тут столько эдаких ПРОГРЕССИВНЫХ экспертов повылазило? Вы там что, все работаете в командах, где все потные чуваки и следят за последними трендами? И никто не препирается: ни команда, ни начальство, что мол НИНУЖНА?
>>1179980 ой бля, высасываешь проблему из пальца. Замапь волум на реальный диск и пусть туда складываются логи. В чем проблема то? Это сэйм шит, что и без докера. Тебе нормальное решение предложили, ELK это вообще почти стандарт.
>>1179989 Ну да. Так сейчас во всех нормальных компаниях и командах. Раньше работал, где орали НИНУЖНА, но дропнул их и сменил работу и теперь обмазываемся докерами, кубернетами, микросервисом и реактивщиной.
Разработай дома на арче, арендуй впс с почиканой убунтой или центосью и охуей выкатывать впрод. Особенно со сраным питоном, где от диструбутива зависит 3-ий питон у тебя по дефолту python или python3, а если тебе нужна актуальная версия, а в дистре уже устаревшее говно мамонта, то начинаются жопоебля с плясками, бляяя как бомбит от этого говна, боже храни королеву и докер, аминь!
>>1179926 >Сейчас подоспеют девопсы 80 лвл и скажут что базу в контейнерах держать низя Почему? Слишком высокий оверхерд? Можно же файлики контейнера хранить в файловой системе хоста, по этому шансы проебать данные вроде как не повышаются.
Как же я блядь охуел с того, что в докере не работает крон. Ну точнее как. Только один процесс на контейнер, если нет, начинаются какие-то анальные пляски и пердолинг. Я же просто пхп-макака, мне всего ничего надо: apache/nginx(похуй), php, mysql, cron, да еще пара приблуд.
Еще вопрос про базы данных в докере. Что если хайлоад? Как в докере замутить шардинг?
Ну и как организовать крон? Идеология докера говорит, что все говно должно быть по разным контейнерам. Если я засуну крон в отдельный контейнер. ВНЕЗАПНО, оказалось, что если я сделал volume с хоста в какой-то контейнер, то я уже не могу этот же волум забиндить в другой контейнер. Плюс крон будет крутиться в отдельном контейнере со своим маня-миром и даже если бы я сделал общие файлы у двух контейнеров, то что бы этот крон вызывал? Как он может запустить прогу на другом контейнере?
>>1185596 Сука вчера перед сном как раз думал про эту хуебень. В итоге пришёл к выводу, что написать на баше скрипт, который скачивает репозитории а потом создаёт директорию для юникс сокета всё же менее геморойней чем вкатываться в докер. Единственное что реально сложно сделать на баше, это проверить наличие пакетов, версий языка и скачать, проапдейтить в случае необходимости и вообще написать эдакую программу запуска приложения на неизвестной ос сложно очень. Поэтому походу всё придётся вкатываться в докер.
Понабежали "специалисты". То у них от докера пользы нет, то у них докер - это внезапно виртуальная машина (ага, и chroot - это тоже виртуальная машина по такой логике). Дебилы, блять.
>>1179786 >минус докера в том, что собирается долго и когда пушишь ветку на удаленный сервер то докер билдится пиздец как долго. Так чисти промежуточные файлы сразу, блеать.
>>1194024 Нет, он не билдится с периодичностью, а именно падает контейнер, то есть висел сайт и в воскресенье утром начинает выдавать 500 ошибку. Такое ощущение, что он живет только на неделе, когда билды пушишь.
>>1179786 > минус докера в том, что собирается долго и когда пушишь ветку на удаленный сервер то докер билдится пиздец как долго. Если правильно написать докерфайл, то он билдится будет за секунды, так как каждая команда в докерфайле это отдельный слой и при каждом последующем билде имеджа если не указывать --no-cache ключ, докер будет сверять хэши для каждого слоя (команды) и не будет выполнять команду из докерфайла покуда не увидит различие хэша, и только когда хэш изменится, то доке с того степа начнет апдейтить имедж.