Как использовать одну виртуальную машину для нескольких приложений?
Docker это то что мне нужно? А может я хочу невозможного?
У Docker чуть отличается концепция, но оно даже лучше подходит.
Основная идея - каждый сервис в своем контейнере. То есть у базы данных свой контейнер, у приложения - свой, у nginx - свой отдельный контейнер. В среднем одно простенькое приложение требует 3 контейнера (приложение, база данных и web-сервер в качестве прокси). Если у вас 10 проектов то это будет 30 контейнеров. Ну и да, не забываем про data-only контейнеры, они не несут дополнительного расхода ресурсов и нужны только для удобной организации сохранения данных. Если вы используете контейнер с базой данных - то это сразу +1 data-only контейнер. Приложение может аплоадить файлы - еще один контейнер-пустышка. Звучит страшно, да?
Каждый контейнер основан на другом контейнере, например все ваши контейнеры могут базироваться на одном образе, например Debian или Ubuntu. А особенность архитектуры файловой системы контейнеров позволяет реюзать оные, что значит что у нас будет всего один базовый контейнер с убунтой на остальные 30. Ну и далее, база данных обычно у нас так же частенько одна и та же (например в моем случае это postgresql), так что 10 контейнеров для 10-ти приложений превращаются в один контейнер с базой данных и 10 контейнеров-пустышек для сохранения данных приложения.
Ну и далее, все общие вещи реюзаются между контейнерами (то есть смотрим по базовому образу).
В случае же с виртуалками у нас 10 виртуалок в которых крутится 10 операционных систем (в докере только окружение, но ядро используется на уровне хоста), 10 баз данных ну и тд. То есть докер существенно сокращает количество необходимых ресурсов и вообще прикольно.
Docker НЕ работает на windows. Точнее microsoft планирует сделать поддержку оного (если еще не сделала), но только для win server-ов. Что не ок. Так что linux в виртулку поставить придется, но только одну на все проекты. Что же до возни с самбами и прочим - тут уж как хотите. В целом же производительности обычных шаред фолдеров должно хватать (так как мы всеравно мэпим данные по большому счету на файловую систему виртуалки).
Так что можно просто скачать Docker Toolbox и работать. Для Mac OS есть еще штука под названием dinghy, которая добавляет прозрачную поддержку NFS и т.д. но для винды такого нет (только черзе vagrant). Ишус на эту тему висит в репозитории docker-machine и возможно в скором времени и это запилят.мне не нужны танцы с виртуалками, самбой, настройкой хостов и тп?
Вообще-то это никогда не нужно, все уже придумано до нас. Есть такая штука как vagrant которая полностью решает вопрос оркестрации виртуальными машинами для изоляции окружения. Но оверхэда оно дает сильно больше.
Да, можно Docker, но тогда, правельнее, взять еще одну машину - сервер, там поставить ваш Linux, в нем Docker, на сервер заходить по графическому терминалу.
А вообще 10 виртуальных машин в продакшене, и у них, у всех разная конфигурация - это не true way.
У Вас БД одна и таже на все 10 машин или разные, на каждой своя?
Если одна, то можно без докера обойтись, если веб-сервер везде один и тот же.