Осваиваю виртуализацию и задался некоторыми вопросами. До этого пользовался вагрантом (homestead). Все хосты крутились на одной виртуалке обычно. Но тут начал изучать докер, дается очень сложно, но чувствую возможности у него очень крутые, ведь докер - это замечательный файлообменникник. Я так понимаю, главная фишка в том, что я могу настроить конфигурацию и потом запускать проект абсолютно в любом месте, не настраивая окружение.. Но в таком случае есть ли смысл в вагранте вообще, если в итоге в идеале надо все равно настроить для проекта докер, чтобы он был переносным? Или вагрант все же удобней и проще для локальной разработки?
Wentixon, нет не так. если вы планируете использовать докер как замену виртуалке, то вы не поняли для чего он нужен. Стоит еще раз почитать гайды и философию микросервисов. А для локальной разработки поднимите виртуалку в virtualbox(через вагрант или напрямую не суть важно), на ней уже настраиваете окружение аналогичное проду(в том числе докер если он требуется) и работаете.
FeNUMe, ну можете хотя бы немного прояснить, для этого и вопрос задал =) Не понимаю, почему докер не может быть заменой, если с помощью него можно поднять окружение для проекта.. Я же не спорю что это абсолютно разные инструменты. Но можно же взять докер и запустить без гемороя проект, ведь так? И можно виртуалку настроить для проекта и запустить его там.. Но лучше же сервисы необходимые поднять вместо виртуалки же не?
Wentixon, ну гвозди можно забивать как молотком так и микроскопом... пожалуй я не буду пытаться подробно объяснить разницу, за меня это уже сделали в тысячах статей и официальной документации докера.
но если сильно упростить то контейнер докера это как портативная версия приложения, а виртуалка это как портативная версия целой ОС со всеми приложениями и данными. да вы можете в один контейнер запихать сразу несколько приложений(например nginx+mysql+php-fpm) плюс еще закинуть туда же статику, ваш код и бд - но это не верный подход(не безопасно, создает сетевой оверхед, усложняет обновления и тд).
В общем случае если вам нужно запустить несколько разных рабочих окружений(разные ос и/или разный набор софта) - выбираете виртуалки, если вам нужно запустить несколько приложений(или копий одного с разными конфигами/хранилищами данных) на одной системе - выбираете контейнеры.
Корректно говорить о сравнении vagrant и docker-compose. Если у вас продакшен полностью через докер, то однозначно надо использовать docker-compose, если нет, то тут может быть по разному. В любом случае стартовать проще с вагрантом, да и полезнее. Так что рекомендую.
p.s. На Хекслете мы написали множество гайдов в том числе про docker, vagrant, виртуализацию и все такое: guides.hexlet.io Новичкам будет полезно.
спс, сейчас поколдую с помощью ваших гайдов =) Пока только запустил готовый образ с nginx..
Но все равно не понимаю, в чем плюсы у виртуалки? Зачем поднимать виртуалку и настраивать, когда можно поднять сами сервисы необходимые для проекта? Почему с вагрантом полезнее стартовать?