Как организовать клонирование контейнеров на zfs?
Добрый день.
Задача: есть 20 разработчиков, есть 2 крупных проекта с большими базами, но нет единого рабочего окружения. Необходимо сделать так, чтобы у всех разработчиков была возможность создавать/пересоздавать рабочие среды в мгновение ока + чтобы все среды были одинаково настроены и раскатаны все проекты (их 2) с их полными базами (допустим их тоже 2). Базы достаточно большие (допустим 100 гб каждая) и просто копировать всё окружение не очень круто (т.к это будет занимать много места + время на копирование). Вроде как для этих целей хорошо может подойти zfs. Т.е создаем мастер-окружение при помощи, скажем, docker-compose — с этого окружения мы будем снимать снэпшоты, чтобы потом клонировать это всё дело, чтобы попусту не копировать файлы, которые не будут изменяться. Следовательно, чтобы развернуть новое окружение вместе с базой и проектами, не нужно долго и муторно раскатывать дамп, достаточно просто склонировать снэпшот и у вас рабочая среда.
Вопрос: как это всё организовать? я поставил zfs, создал пул, создал файловую систему, смонтированную на /var/lib/docker и вроде бы всё работает, но ведь это сейчас решает проблему копирования / клонирования / восстановления всех контейнеров, что у нас есть, а не каких-то конкретных. Направьте, пожалуйста на путь истины. Можно ли смонтировать zfs на уровень контейнеров, затем делать снэпшоты, клонировать, а потом как-то магически менять пути и чтобы контейнер вроде как другой, но данные берутся с клона. Или же выделять storage-контейнеры с voluum на zfs, куда складывать все данные (проекты, файлы бд), а потом просто использовать эти контейнеры в качестве voluum'ов для других контейнеров, чтобы они использовали просто эти данные?
Задача: есть 20 разработчиков, есть 2 крупных проекта с большими базами, но нет единого рабочего окружения. Необходимо сделать так, чтобы у всех разработчиков была возможность создавать/пересоздавать рабочие среды в мгновение ока + чтобы все среды были одинаково настроены и раскатаны все проекты (их 2) с их полными базами (допустим их тоже 2). Базы достаточно большие (допустим 100 гб каждая) и просто копировать всё окружение не очень круто (т.к это будет занимать много места + время на копирование). Вроде как для этих целей хорошо может подойти zfs. Т.е создаем мастер-окружение при помощи, скажем, docker-compose — с этого окружения мы будем снимать снэпшоты, чтобы потом клонировать это всё дело, чтобы попусту не копировать файлы, которые не будут изменяться. Следовательно, чтобы развернуть новое окружение вместе с базой и проектами, не нужно долго и муторно раскатывать дамп, достаточно просто склонировать снэпшот и у вас рабочая среда.
Вопрос: как это всё организовать? я поставил zfs, создал пул, создал файловую систему, смонтированную на /var/lib/docker и вроде бы всё работает, но ведь это сейчас решает проблему копирования / клонирования / восстановления всех контейнеров, что у нас есть, а не каких-то конкретных. Направьте, пожалуйста на путь истины. Можно ли смонтировать zfs на уровень контейнеров, затем делать снэпшоты, клонировать, а потом как-то магически менять пути и чтобы контейнер вроде как другой, но данные берутся с клона. Или же выделять storage-контейнеры с voluum на zfs, куда складывать все данные (проекты, файлы бд), а потом просто использовать эти контейнеры в качестве voluum'ов для других контейнеров, чтобы они использовали просто эти данные?