Задача: есть 20 разработчиков, есть 2 крупных проекта с большими базами, но нет единого рабочего окружения. Необходимо сделать так, чтобы у всех разработчиков была возможность создавать/пересоздавать рабочие среды в мгновение ока + чтобы все среды были одинаково настроены и раскатаны все проекты (их 2) с их полными базами (допустим их тоже 2). Базы достаточно большие (допустим 100 гб каждая) и просто копировать всё окружение не очень круто (т.к это будет занимать много места + время на копирование). Вроде как для этих целей хорошо может подойти zfs. Т.е создаем мастер-окружение при помощи, скажем, docker-compose -- с этого окружения мы будем снимать снэпшоты, чтобы потом клонировать это всё дело, чтобы попусту не копировать файлы, которые не будут изменяться. Следовательно, чтобы развернуть новое окружение вместе с базой и проектами, не нужно долго и муторно раскатывать дамп, достаточно просто склонировать снэпшот и у вас рабочая среда.
Вопрос: как это всё организовать? я поставил zfs, создал пул, создал файловую систему, смонтированную на /var/lib/docker и вроде бы всё работает, но ведь это сейчас решает проблему копирования / клонирования / восстановления всех контейнеров, что у нас есть, а не каких-то конкретных. Направьте, пожалуйста на путь истины. Можно ли смонтировать zfs на уровень контейнеров, затем делать снэпшоты, клонировать, а потом как-то магически менять пути и чтобы контейнер вроде как другой, но данные берутся с клона. Или же выделять storage-контейнеры с voluum на zfs, куда складывать все данные (проекты, файлы бд), а потом просто использовать эти контейнеры в качестве voluum'ов для других контейнеров, чтобы они использовали просто эти данные?
Дмитрий Шицков: ну, в теории-то всё понятно, а вот конкретно на практике как это реализуется? допустим есть у нас контейнер-образец, лежит по адресу /var/lib/docker/containers/98db614faeffdb1513c1a33b8caa7b4ca4b4f0fa9741c505bc2e3aaeee2c0048, но внутри этой директории только конфиги по сути, к нему подцеплен volume /var/lib/docker/volumes/8190ce9e813c8d642f0626ab9a75f7489353aa7f7799f34a0fef9647fe5f0355, а дифф файловой системы находится вообще в /var/lib/docker/aufs/diff/dddbf062b5dabca0a0d2a47f552d1577d03722c90ec7cd18d828b7f38dc593ef. Т.е всё в разных местах на разных уровнях. Можно как-то сконфигурировать, чтобы это всё лежало в одном месте? Или zfs storage-driver делает магию и сам рулит всем?
Написано
Армянское Радио
@gbg Куратор тега Системное администрирование