Ответы пользователя по тегу Docker
  • Можно ли передать переменные окружения в уже созданный контейнер Docker?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    как вариант - подключится к рабочему контейнеру через docker exec дополнительно указав команду export с необходимой переменной.
    Ответ написан
  • Терминология: почему контейнеры называют микросервисами?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    Насколько я понимаю, микросервис - это обычный сервис, который решает одну маленькую задачу. Микросервис может состоять как из одного контейнера, так и из нескольких контейнеров (если используются контейнеры).

    да
    вобще терминология немного вводит в заблуждение, обычно говорят не микросервис, а микросервисная архитектура, тоесть такая архитектура сервиса при которой сервис состоит из множества независимых друг от друга узлов, которые ты можешь независимо разрабатывать и деплоить, без необходимости изменений в остальных узлах. сколько самих узлов и их размер уже не так важен.
    Ответ написан
    Комментировать
  • Кластер: обязательно ли наличие нескольких серверов?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    2. дополнительная пропускная способность? - ну если только ДО БД, а дальше бд то одна, соответственно перфоманс всего приложения всё равно не изменится.
    Ответ написан
    Комментировать
  • Микросервисная архитектура: насколько микро? и почему не возникает проблем с долгим ожиданием?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    обычно микросервисы нарезают так чтоб они обслуживали отдельную "тематику", которую можно было бы отдельно маштабировать и отдельно дорабатывать, от всех остальных. Пример:
    микросервис который обрабатывает работу каталога (и всё что связанно с ним), отдельно микросервис который будет работать с доставкой и отправкой заказов, микросервис который работает с партнёрской программой и начислением балов лояльности, и микросервис который занимается обработкой платежей. У каждого из этих микросервисов желательно иметь свою БД, тогда они могут независимо друг от друга работать и независимо маштабироваться, только отвечая потребностям свой нагрузки - очевидно нагрузка на каталог сильно выше чем на сервис обработки платежей (например каталог может обрабатывать 10 узлов, заказы обрабатывают 3 узла а платежи 1 узел)
    При использовании монолита вы масштабируете сразу все сервисы на узлы, что не так эффективно.
    -------
    По поводу перфоманса - при такой нарезке как описал выше, у вас крайне редко будет ситуация когда для ответа на один запрос от пользователя, нужно будет опрашивать сразу несколько сервисов, НО даже в таких ситуациях не так важна задержка между вызовами, сколько возможность масштабировать обработку этих запросов.
    -------
    транзакционность обычно осуществляется через SAGA паттерн.
    По поводу консистентности - если ты начинаешь масштабировать систему, значит состояние размазывается по множеству разных узлов/сервисов, вся суть что эти узлы/сервисы могут независимо друг от друга работать, значит консистентность будем мешать независимой работе (тоесть производительности), если сервисы зависимы то они не маштабируются (раз один узел ожидает что-то для работы от другого узла), поэтому там предъявляются "ослабленные требования" к консистентности состояния, как правило используют eventual consistency (согласованность в конечном счете), говорят что рано или поздно типа состояние в системе будет согласованно, если не будут поступать новые данные)
    ну а пока данные поступают, то состояние может быть не согласованно между узлами.
    Ответ написан
    Комментировать
  • Автоматизация пересборки контейнера после установки пакета в проекте. Возможно ли?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    ну есть такая команда docker commit - которая позволяет сохранить изменения в контейнере. но думаю всё равно стоит сохранять в докер фаил все шаги необходимые для новой сборки имиджа (просто не всегда его пересобирать).
    а для того чтоб автоматизировать сборку, обычно выстраивают CI/CD пайплайны, завязывая их на изменениях в репозитории. Тоесть в своём репозитории описываются дополнительно шаги по сборке контейнера, которые срабатывают каждый раз когда происходят изменения в репозитории (ну например изменения докер файла или какие-то изменения в коде проекта).
    П. С.
    сборка разумеется идет с нуля, но за счет того что каждая инструкция в докер файле - это отдельный слой который кэшируется, то процесс может неплохо так ускоряться.
    Ответ написан
    Комментировать
  • Как запустить 2 процесса в контейнере Docker?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    CMD - это просто аргументы которые используются по умолчанию при запуске контейнера, последний CMD перезаписывает предыдущий.
    вобще чтоб запустить параллельно процессы можно команды соединить амперсандом — &
    Однако лучше это не делать, гипотетически это создаст проблемы при ограничении ресурсов на один контейнер, и сложности при масштабировании контейнеров.
    Ну и плюс сами контейнеры и есть процессы, просто с определенными слоями изоляций.
    Ответ написан
  • Почему наблюдается разное поведение при сборке Dockerfile локально и в CI / DI?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    ну вроде как у вас на врокере, на котором идет сборка из гитлаба, не установлен какой-то модуль)
    Ответ написан
  • Как быстро переносить сайты и реконфигурировать вебсервер (Облако как безотказный сервер)?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    обычно используют облачную БД + виртуальные машины в разных регионах, ну и балансировщик запросов для сервиса.
    Ответ написан
    Комментировать
  • Gitlab СI/CD php приложения в докере. Как организовать?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    контейнеры лучше шарить через репозиторий, тк за счет кэширования слоев получается очень быстрая и эффективная схема работы.
    Ответ написан
    3 комментария
  • Как деплоить jar с помощью docker?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    ну обычная схема CI/CD - какой-нибудь сборщик (для гитхаба это обычно https://travis-ci.org/) - компилирует твой джарник.
    потом он же потом копирует этот джарник докер имидж.
    потом отправляет этот докер имидж в репозиторий, например на докерХабе, оттуда ты уже можешь скачивать и запускать контейнер там где тебе надо.
    Ответ написан
    Комментировать
  • Использовать mysql в контейнере docker в продакшене или нет?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    в контейнере не сохраняются изменения файлов (баз данных), после перезапуска контейнера вся ваша БД будет сброшена в изначальное состояние, что удобно например при тестировании, но не при работе.
    для того чтоб сохранять изменения данных, требуется проводить определенные операции, и чтоб данные в бд были согласованными с вашим контейнером вам нужно будет постоянно отслеживать и обновлять контейнер сразу после внесения изменений в БД, такая процедура создает серьезную нагрузку и ненужный гиморой.
    Ответ написан
  • Экскурс на русском языке: суть, настройка, и использование Docker?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    все эти контейнеры, образа, нужны что отделить инфраструктуру (железо), от софта, что дает много свободы и гибкости.
    Кто-то эту свободу использует для тестирования, а кто-то для эффективного использования железа, запоковал свой микросервис в контейнер, и масштабируешь его по любому железу как угодно, на одном сервере запустил 5 контейнеров, на другом который мощнее запустил 50 контейнеров, на третьем еще 20-30 контейнеров, какой-то вышел из строя, нагрузку перераспределил на оставшиеся контейнеры со своими копиями микросервисов, тутже новый сервер поставил, еще сколько там отмашстабировал своих микросервисов.
    Такой подход позволяет повысить эффективность использования серверов, также задачи плавно балансировать нагрузку между серверами, когда низкая нагрузка отключил 100-200 контейнеров, что-нибудь другое там крутишь и тд, когда высокая добавил серверов, подзапустил еще контейнеров с копиями сервиса, и перенаправляешь часть запоросов туда.
    Если у тебя например соц сеть, или просто дата центр, то тебе важно динамически распределять нагрузку по разным серверам, динамически убирать какие-то сервера, добавлять, перераспределяя контейнеры.
    Конечные пользователи этого даже не заметят.
    П. С. докер просто на хайпе, но далеко не единственный вариант реализации такой стратегии.
    П. П. С.
    если вы не знаете зачем он нужен, то вам он гарантированно не нужен.
    Ответ написан
    4 комментария