Так что я новичок в докере, и в частности в докере. Я только что установил jenkins и хочу, чтобы он работал на всех узлах, независимо от того, работает ли он только с одним экземпляром на одной машине или 10 экземплярами на 5 машинах.
Проблема, конечно же, в том, «откуда Дженкинс знает, какие у меня определения сборки». Вероятно, есть особый способ решить эту проблему для Дженкинса, но я вижу, что в будущем у меня будут аналогичные проблемы. Это заставило меня задуматься: есть ли простой способ настроить репликацию в файловой системе / томе? предпочтительно в конфигурации главный / подчиненный, которая будет работать в среде роя докеров?
Даже если у вас есть волшебное решение для репликации данных, оно не решит проблему полностью. Обратите внимание, я не эксперт по Дженкинсу.
Похоже, что вам нужно сохранить данные для вашего контейнера Jenkins.
Есть как минимум два способа заставить приложение с постоянными потребностями в данных (например, база данных, Jenkins и т. Д.) Работать в кластере контейнеров:
Используйте встроенную в приложение кластеризацию. Может ли Дженкинс сделать мультимастер? Выполнение этого типа HA не сильно меняет в оркестраторе контейнеров. Если приложение (Jenkins) поддерживает HA, то обычно лучше это сделать. Как и в случае с репликами Mongodb или кластерами elasticsearch ... лучше всего создать отдельные службы роя с одним контейнером каждый и подключить их друг к другу, как до того, как вы использовали Swarm.
Используйте Swarm для хранения постоянных данных и повторного создания отказавших контейнеров. Храните данные Jenkins в томах докеров, поддерживающих Swarm. Для этого потребуется общее хранилище и плагин тома, например REX-Ray, или любой из store.docker.com для хранения всего, что необходимо подключить к работающему экземпляру Jenkins, чтобы он работал. Затем, между томами докеров, конфигурациями Swarm и секретами Swarm, когда служба, запускающая контейнер Jenkins, умирает или должна повторно создать контейнер, она гарантирует, что тома / конфигурации / секреты находятся на любом узле задачи (контейнере) запускать. Это не настоящий HA, но это близко.