В современном мире, когда над одним продуктом работают несколько команд и иногда они находятся не только в разных комнатах, но даже в разных городах и странах, взаимодействие и своевременная доставка наработок играет очень важную роль.
Docker – это предустановленный образ со всем окружением и зависимостями. Его легко можно дать другой команде, развернуть одной строкой в терминале, и она не будет ломать голову, какие зависимости нужно установить и как должны стоять звезды и Юпитер, чтобы все работало как надо.
Если у вас одна команда которая сидит рядом, то это может помочь в тестировании продукта. Можно настроить скрипты, которые после каждого коммита будут упаковывать новый контейнер. А уже тестировщики будут всегда иметь самый свежий продукт для тестирования без танцев с бубном.
Для проекта с 1-2 людьми, где программист он ещё и тестировщик и автоматизатор, это не принесёт особой пользы. Больше мороки.
25 лет если все "возьмутся за голову" или 150/200 лет, если всех придется пинать пятой колоне.
От 50 лет до бесконечности.
Зачем ждать "поезд в рай"... начните сами улучшать свой уровень жизни и культуры )
Докер это тоже ВМ. Но когда вам нужно по контейнерам раскидать MySQL, PHP, Supervisord и т.д, тогда в традиционном понимании разворачивание ВМ будет не простым делом
Регулярно использую docker на дэсктопе.
При сборке разных приложений полученных из разных источников нет нужны каждый раз перенастраивать рабочее окружение, когда сборка идёт в контейнере.
Используя докер имеешь больше уверенности, что приложение получит доступ только к тем данным, которые ты ему пробросишь в контейнер. (настраивать селинукс и аппармор, ради одного- двух запусков избыточно (изменнения потом так-же придётся убирать))
Можно запускать несколько экземпляров приложения ос разными профилями пользователя, без необходимости заводить пользователей в ОС.
Имеешь возможность гибко раздавать ресурсы программам.