@ezayka

Виртуальная машина — для чего нужна при разработке?

Есть ноут с виндой.
Знаю, что сейчас очень популярны виртуальные машины. Объясните плиз саму идею. К примеру ставим апач, mysql, python на ноут. А для чего виртуалка, что на ней запускать?
Прошу шапками не закидывать, объясните на пальцах саму идею.
  • Вопрос задан
  • 376 просмотров
Пригласить эксперта
Ответы на вопрос 5
jamakasi666
@jamakasi666
Просто IT'шник.
1) Ставим НУЖНУЮ ОС, в нее софт ВНЕЗАПНОЙ версии, тестим НЕОЖИДАННЫЕЕ баги.
2) Ставим НУЖНУЮ ОС, в ней собираем из исходников НЕОБХОДИМЫЙ софт.
3) Ставим НУЖНУЮ ОС ИНТЕРЕСУЮЩЕЙ версии, ТЕСТИМ, УЧИМСЯ, ПОВЫШАЕМ квалификацию.
4) Создаем НУЖНОЕ число виртулок, ставим в них НУЖНЫЕ версии ОС и софта, ОРГАНИЗУЕМ из них НЕОБХОДИМЫЙ стенд и ТЕСТИМ, УЧИМСЯ, ОТТАЧИВАЕМ навыки.
5) Создаем виртуалки, ДАЕМ УДАЛЕННЫЙ ДОСТУП разрабам, разрабы довольны и могут моделировать что хотят.
6) Поднимаем НУЖНЫЙ софт НУЖНЫЙХ версий, накатываем НЕОБХОДИМЫЕ конфиги, ДЕЛИМСЯ готовой виртуалкой с другими людьми.
7) Поднимаем НУЖНЫЙ софт НУЖНЫЙХ версий, накатываем НЕОБХОДИМЫЕ конфиги, ЗАБЫВАЕМ проблемы если сдох сервер т.к. можем куда угодно перенести готовую виртуалки и без телодвижений запустить ее.
8) ЗАНИМАЕМСЯ исследованием безопасности софта\ос в виртуалке или вирусов.
9) СМОТРИМ порно\лук\i2p\... в виртуалке, не паримся за оставленные следы на компе.
10) ПОДНИМАЕМ какие угодно, каких угодно версий версий не переживая за основную ОС.
...) ....
1005000....) каждый находит свое применение.
Ответ написан
@Yan-s
Чтобы иметь возможность разрабатывать приложения в нужном окружении и иметь возможность этими окружениями управлять не мешая друг другу.
Ответ написан
SerafimArts
@SerafimArts
Senior HTML Developer
Давайте для начала определимся с определением "виртуалка". В Вашем контексте вопроса: Про разработку, насколько я понял, с использованием виртуалок, верно? Это определение можно применить не только к виртуализации как таковой, но и к контейнеризации в целом, хотя технические различия у них есть и довольно много. Так что продолжим с этого, имея в голове инфу о том, что под виртуалкой мы подразумеваем какую-то абстрактную коробку (это только что придуманный термин) внутри которой это всё крутится, не важно что это, виртуалка или контейнер.

Этой "коробкой" можно назвать вашу ОС. Туда вы ставите всякие apache, mysql, python (давайте называть это AMP), как говорите. Всё ок.

А теперь чуть изменим правила:
1) Берём коробку на Ubuntu и запихиваем туда этот "AMP". Теперь у вас внутри вашей ОС есть коробка со всем необходимым.
2) Берём коробку на Windows и запихиваем туда этот "AMP". Теперь у вас на компьютере две коробки, которые работать могут совершенно одновременно.

Ну т.е. понимаете, да? У вас внутри, ну, допустим, MacOS висит и Windows и Ubuntu, внутри которых установлен стек "AMP" и один и тот же код, разрабатывая локально вы можете одним кликом мыши/клавиатуры прогонять и там, и там.

Host OS (MacOS) -> Windows -> "AMP"
                -> Ubuntu  -> "AMP"


В случае "контейнеров", например Docker, обычно делают чуть иначе:
Host OS -> Linux -> Apache
        -> Linux -> MySQL
        -> Linux -> Python


Т.е. под каждую программу отдельный контейнер. Теперь нам не надо мучаться со сборкой. Если что-то поломается мы можем просто взять, поправить конфиги и просто переустановить с нуля отдельную программку. А можем вообще организовать как-то так:

Host OS -> Linux -> Apache (который смотрит на Python 2 и отдаёт результат по 127.0.0.1:80)
        -> Linux -> Apache (который смотрит на Python 3 и отдаёт результат по 127.0.0.1:81)
        -> Linux -> MySQL
        -> Linux -> Python 2
        -> Linux -> Python 3


Можем открыть две вкладки браузера и смотреть как код работает на совершенно разных версиях питона! И при этом локально у Вас вообще ничего не будет установлено, никаких конфигов, никакого мусора. Что-то не понравится или поломается берёте и сносите кусок, заменяя его на другой. Тут уже воображение.
Ответ написан
CityCat4
@CityCat4
У тролля даже мозги - и то каменные!
На ноут сможете поставить только все это хозяйство под винду. Под виндой оно работает... как и все под виндой :) Кроме того множество манов будут подразумевать, что оно работает в линухе и будете сидеть и греть голову - как мне это применить к винде.
Берете виртуалку, ставите в нее линух, в нем уже все необходимое - допустим набор версий А (очень часто разрабу нужно оттестить, как работает его код в таких-то условиях и в таких-то - с разными питонами, с разными версиями php - тут часто попадаются подобные вопросы). Потом - другую виртуалку - в ней набор версий Б и т.д. Возникла ошибка - которую не понять - делаем снапшот, машину в стоп и "окей, гугл, поди-ка сюда..."
Вот, например, кейс, как я писал прохождение одной старой игрухи, в которой сохранение не предусмотрено :) От слова совсем. Игруха ставится в виртуалку, в нужный момент делается снапшот. И все прочие разы вместо сохранения - делает снапшот...
Виртуалка позволяет упражняться в ...чем угодно :) не ломая основную систему, особенно, когда она такая хрупкая как винда на ноуте :)
Ответ написан
GavriKos
@GavriKos
Ставим апач и прочее В ВИРТУАЛКУ.
Чтобы не засирать ноут.
И тестировать на условно реальном окружении - в виртуалке должна крутиться +- та же ось и тот же софт что и на проде.

P.S. виртуалки в чистом виде УЖЕ не популярны. Уже популярны контейнеры и всякие варганты.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы