ОК.
Чтобы тред не был похож на перекидывание ссаной тряпки, приведу несколько кейсов использования docker.
Если то, что у нас решается с помощью него, можно решить быстрее/проще/удобнее каким-либо другим инструментом - велком, расскажите, буду рад новому опыту.
*далее я говорю только о web
Кейс 1. Разработка.
Каждому разработчику передается docker-compose.yml-файл, в котором прописано как нужно поднять окружение (контейнер с nginx, контейнер с php-fpm, mongo, mysql и т.д. - все связаны между собой).
Окружение разворачивается за 5-7 минут и оно максимально соответствует dev-, stage, prod-площадкам (т.е. не возникает ситуаций, когда программист говорит "а у меня на машинке работало, не знаю чего прод упал").
Разработчик монтирует папку с кодом вовнутрь контейнера с nginx и воплощает свои гениальные мысли, моментально наблюдая все свои изменения обратившись на
http://localhost (например).
Кейс 2. CI/CD.
Наш CI/CD настроен таким образом, что после мерджа ветки, над который трудился наш разработчик, в мастер, запускается процесс тестирования и деплоя кода.
Сначала подтягивается docker-контейнер с легковесным Linux alpine и преднастроенным окружением, туда монтируется код и гонятся тесты. Затем, если тесты - ок, код деплоится на dev-площадку и т.д.
Разве не удобно? Docker-контейнер с Linux alpine разворачивается за секунды.
Кейс 3. Демонстрация продукта заказчику.
У нас подоспел очередной билд и мы хотим продемонстрировать заказчику новые фичи. Нет ничего проще!
Снова docker-compose.yml-файл собирает нам все окружение, пихает туда код и на выходе у нас готов конечный продукт (нам нет нужды настраивать все сервисы на какой-то ВМ - они уже преднастроены в контейнерах).
Все вновь происходит за считаные минуты, при чем делается автоматически нашим CI/CD в gitlab. Ну не красота ли?
Кейс 4. Стек ELK/EFK.
Из недавнего.
Нужно было быстро развернуть в новом DC стек ELK (у нас EFK - Elasticsearch Fluentbit/fluentd Kibana&Grafana).
Тоже все просто. Готовим 3 ВМ (у нас в proxmox шаблоны, т.е. просто выкатываем из шаблона три виртуалки). Далее при помощи ansible раскатываем преднастроеные docker-compose на эти три ВМ и у нас готов стек - можно пользоваться.
Заметьте, не настраиваем в ВМ через ansible все нужное (а это: elk, keepalived, cerebro, kibana и grafana), а подтягиваем все готовенькое в виде docker-контейнеров!
На все про все примерно час времени. Тоже не убедило?
Хватит пожалуй.