Выбор ОС для разработки под Docker: Windows или Linux?
Здравствуйте
Я новичок в вэб-разработке. ОС, которой пользовался "всю жизнь" - это Виндовс, начинал ещё с вин98. Винда меня как пользователя и, пока что, начинающего вэб-разработчика полностью устраивает. Давно уже стал пользоваться OpenServer. Как мне кажется вещь, очень хорошая и не только для учёбы. На этот счёт мнение у всех своё. А это моё мнение новичка, скорее всего не совсем корректное. Много слышал, что если разрабатывать под виндой, то при переносе проекта на продакшн начнутся всякие проблемы, потому что там будет линукс. И вообще винда зло, а линукс чудо земное, особенно для вэб-разработчика.
Есть люди (как я думаю матёрые разрабы), которые мне помогают с направлением в освоении вэба, за это им очень благодарен и не хочу переходить черту, после которой меня пошлют нах*й. Я и так им много назил дурацкими вопросами, потому лучше задам эти, возможно, дурацкие вопросы здесь. Они настойчиво мне советовали начать пользоваться линуксом, а именно вести разработку на линуксе. OpenServer считают чем-то вроде игрушки из яселек. К тому же они сами линуксойды-макбукфилы, Винду считают куском глючного г*вна. Я же сам, попробовав несколько разных дистрибутивов линукса, считаю линукс далёким от идеала. Это моё личное мнение, не кому его не навязываю. После винды, такой удобной и родной, пусть даже не идеальной, линукс это как другая планета. Образно говоря, как открывать все двери (даже не запертый холодильник, к примеру) с помощью монтажки (терминал) и "такой-то матери" (sudo su). Монтажка аргумент - железный, тут не поспоришь. Дело за тем, как и где её правильно приложить. Лично для меня переход на линукс - это боль и красные глаза. Хотя это будет очень ценный опыт.
Также, те самые люди, настоятельно советовали забросить OpenServer и юзать Docker, так как это избавит меня от кучи проблем в будущем. К тому же это по-взрослому и бородато.
На данный момент изучаю Laravel и по идее давно уже должен был начать разрабатывать учебный интернет-магазин. Но сильно "въелись" их слова, и думаю, возможно стоить сменить инструментарий. Думаю теперь как лучше поступить, но не знаю всех нюансов: 1. К дьяволу, пока что линукс. Буду дальше учиться на винде: 1.1. Туда же пока и докер, продолжать учиться ларавел на OpenServer? Ну а как в будущем? Всё-равно придётся менять инструменты. Скажите, аксакалы-вэб-разработчики, кто из вас пользуется OpenServer? Что-то мне кажется, что никто им в зрелой фазе жизни разраба не пользуется. 1.2. Перейти на Docker и работать с докером под виндой? Вроде как для докера разницы нет под какой ос работать. И даже работая из-под винды, с продакшеном на линукс проблем возникнуть по идее не должно. Верно ли мыслю? 2. Всерьёз начать работать на линукс, красноглазить и сдерживать рвотные позывы. А потом через боль и страдания со временем принять святой линукс? И юзать тот же докер на линукс, походу набивая шишки при разработке. Буду работать с линукс в виртуальной машине, устанавливать второй системой пока не хочу.
Как будет лучше поступить? Мне бы сейчас освоить побыстрее лару и может уже начать зарабатывать, финансовое положение такое, никакое.
К тому же часто вижу в требованиях в вакансиях, что нужен или приветствуется опыт: линукс, докер. Если ненароком оскорбил чувства верующих в линукс - простите уж зелёного. В свое оправдание скажу: линукс обязательно буду осваивать, но хотелось бы как-нибудь потом и не на основной-единственной машине....
Простите за "многобукв". Может кто-то вспомнит свои подобные метания в своё "зелёное" время. Может у кого есть опыт разработки на докере в обоих ОС и он даст действительно дельные советы.
Всем огромное спасибо, выручили! Уже несколько дней думал и искал инфу на эту тему.
И даже какашками никто кидаться не стал. Удивлён. Всем добра и здоровья!
Алексей Царапкин, Нет желания доказывать обратное) в этом вопросе правильного мнения быть не может)
PS У Вас на сайте куча орфографических ошибок, по крайней мере в разделе Услуги. Просто в глаза бросается, извините) "прекрассно", "брошеным", "доработую"
Не солидно как-то)
полностью согласен. много проблем с поддержкой устройств, например если у вас ноутбук - вам будет плохо с линухом.
тем не менее я уже год использую линух в своей инструментальной платформе - настроил xfce под себя, использую cli текстовые фильтры от fsf и кайфую (ls, grep и т д).
проблемы со звуком - постоянно как-то не работает. особенно если меняешь пользователя.
Алексей Царапкин, крупная компания выпустила инструмент для завоевания рынка. Отчасти у них удалось. Но смотрите в другую сторону хотя бы на тот же гимп
Разработку ведут не столько в операционке, сколько в твоем любимом IDE/редакторе.
А вот запускать сайт (бэкенд), в принципе лучше в таком же окружении, в каком он будет крутиться в продакшене.
Совершенно несложно поставить виртуалбокс с линуксом, и деплоить сайт в него. Или купить хостинг и выкладывать туда (я больше предпочитаю локалхост, так как безопаснее, быстрее, проще).
Люди, которые хаят виндовс - просто не умеют им пользоваться. Все основные популярные ОС не просто так популярные, и полны своих достоинств.
Сколько я не общался с хейтерами - практически все аргументы больше касаются того, как люди привыкли работать с компьютером в определенной ОС, и то, что фичи в другой ОС работают иначе не только технически, но и идеологически, они не хотят принимать.
mxelgin, Очень маленький момент, касающийся очень небольшого количества памяти.
Винда как сервер требует определенного понимания зачем нужен сервер.
Сервер же не просто сам по себе, он что-то обслуживает, выполняет определенные задачи.
Определенные технологии на windows гораздо более развитые и удобные, тот же AD и Exchange.
Когда-то у Linux изначально было преимущество в удаленной работе приложений, но Windows RDP оказался гораздо более продвинутым и удобным.
Сервер приложений, например, однозначно лучше на Linux.
Saboteur, для разработчика, мир виндовс это постоянные проблемы с памятью и лагами в самых неожиданных местах. Кстати ваш любимый RDP отлично взламывается шифровальщиками.
mxelgin, у вас какое-то неправильное представление о разработчиках под виндовс.
В процентном соотношении количество разработчиков, которые пишут именно на виндовс, явно в пользу виндовс. При этом продукт они могут писать под любую другую операционную систему.
Лучшие SDE под виндовс, хотя сейчас достаточно кроссплатформенных.
Про RDP - расскажите детальнее, а то весь мир-то не знает.
Saboteur, какое может быть представление у разработчика, конечно неправильное)
Ну давайте еще мерять качество продукта количеством рекламы. Будем все в одну кучу пихать?
Так вы за себя говорите, может миру это не интересно.
Saboteur, расскажите почему docker 5-10 лет назад был никому не нужный, "неожиданно" стал стандартом в автоматизации linux инфраструктуры. Где те ваши упомянутые разработчики под виндовс которые написали это гувно docker-descktop и его выкидыш WSL. Неужели эти гении программисты за столько времени не смогли создать свою архитектуру автоматизации что теперь пытаются скрестить ежа с ужом.
docker system pure
diskpart
select vdisk file=C:\Users\YouAccont\AppData\Local\Docker\wsl\disk\docker_data.vhdx
compact vdisk
mxelgin, Простите, покажите мне пожалуйста, как у вас visual studio в докере работает?
или в чем вы пишете?
Или вы не умеете различать рантайм и рабочую машину разработчика?
Докер 5-10 лет назад был как раз очень нужный. Это сейчас он потихоньку уходит под капот куберам и опенщифтам. Это контейнеризация 20 лет назад была мало кому нужна, потому что была не очень юзер френдли и не все понимали какой будет выхлоп.
Что же касается вашей терминологии
С каких это пор докер стандарт в автоматизации?
В автоматизации стандарты это ansible, terraform, jenkins. А докер стандарт в контейнеризации.
Почему вы путаете разработчиков которые сидят на винде, с разработчиками которые пишут винду?
Почему я не могу писать на винде, а запускать на линуксе? Сейчас это вообще стандарт, что я делаю коммит, а собирается, билдится, тестируется и деплоится все на другой машине, другой ОС, и возможно даже в другой стране (тот же гитхаб actions например)
Неужели эти гении программисты за столько времени не смогли создать свою архитектуру автоматизации что теперь пытаются скрестить ежа с ужом.
Похоже, Ваше понимание того, что именно сделали создатели докера, сильно далеко от правды. Создатели докера не писали контейнеризацию - она уже существовала в ядре операционной системы, и докер это просто удобный юзер-френдли враппер над этой возможностью. В то время как в ядре Windows такой возможности штатно нет, поэтому никакие гении программисты не могут это сделать, и даже в самом MS решили что проще сделать WSL, чем менять принцип и архитектуру ядра. Я с ними даже согласен.
В автоматизации стандарты это ansible, terraform, jenkins. А докер стандарт в контейнеризации.
Для вас стандарт контейнеризации не является частью автоматизации?
В то время как в ядре Windows такой возможности штатно нет
Что мешало на текущей архитектуре Windows NT создать свой стандарт контейнеризации?
проще сделать WSL, чем менять принцип и архитектуру ядра
У вас как то странно получается если технология заходит в рынок и становится стандартом значит другие технологии де факто не могут иметь право на конкуренцию.
В итоге имеем шведский стол. В каждую версию MS толкают все подряд лишь бы окупить затраты - пользователь съест, skype, cortana, панель инструментов "параметры", wsl, ie, edge и т.п. Что то приживается что то отторгается, с чем то приходится мириться . И как я выше уже сказал все это разрастается и отъедает место, время и память.
Для вас стандарт контейнеризации не является частью автоматизации?
Нет конечно. Контейнеризация это не автоматизация. Контейнеризация сама по себе.
То, что можно использовать контейнеры автоматически не делает их инструментом для автоматизации. Их предназначение - контейнеризация. Очевидно же.
Что мешало на текущей архитектуре Windows NT создать свой стандарт контейнеризации?
Очевидно же, непосредственно архитектура операционной системы на уровне метаданных процессов, принципа работы process scheduler и то, как ядро управляет устройствами.
Это как бы не просто сделать удобную консольную команду для работы с существующим API, которое уже обеспечено реализацией изнутри. Это надо переделать значимый кусок операционной системы, что СРАЗУ даст минус в перформанс, и потребует приличное время чтобы все это причесать. Это не кнопку пуск поправить.
У вас как то странно получается если технология заходит в рынок и становится стандартом значит другие технологии де факто не могут иметь право на конкуренцию.
Почему? Например вы можете удивиться, но до докера существовал, например, OpenVZ, еще можно было самому попробровать поковырять cgroups.
Просто докер появился в более удачное время и был более "готовым" и удобным в употреблении, чтобы использовать его в продакшене.
Собственно в самой оркестрации было и есть множество конкурентов, но потихоньку многие из них были вытеснены/перекуплены/обанкрочены, и сейчас в ентерпрайз мире остались в основном кубернетес и опенщифт на базе кубернетеса. Кубернетес тоже не сам по себе, а есть облачные решения, которые снимают с вас нагрузку по настройке и поддержке кластера, поэтому сравнивать кубернетес-он премисес и облачный можно как два разных продукта.
В итоге имеем шведский стол. В каждую версию MS толкают все подряд лишь бы окупить затраты - пользователь съест, skype, cortana, панель инструментов "параметры", wsl, ie, edge и т.п. Что то приживается что то отторгается, с чем то приходится мириться . И как я выше уже сказал все это разрастается и отъедает место, время и память.
Ну есть же причины.
В Линукс так не выйдет, потому что ядро Линукса под лицензией. Следовательно дистрибутив Линукса тоже должен соответствовать лицензии.
А значит зарабатывать нужно как-то немного иначе, чем это делает MS.
Но я не вижу, того что вы утверждаете. MS отказалась от ie и edge в пользу движка хромиума, скайп не встроен, кортану можно не ставить. Место, время, память - тратятся незначительно. У меня один и тот же комп начиная с windows7. Ну на десятке быстрее все бегает.
Нет конечно. Контейнеризация это не автоматизация. Контейнеризация сама по себе.
Docker — это платформа контейнеризации с открытым исходным кодом, с помощью которой можно автоматизировать создание приложений, их доставку и управление.
По вашему автоматизация тут лишнее слово?
Очевидно же, непосредственно архитектура операционной системы на уровне метаданных процессов, принципа работы process scheduler и то, как ядро управляет устройствами.
Ничего не очевидно, Куда у вас Hyper-V исчез? купили Virtual PC зашли на рынок виртуализации, дальше расшили уже свои технологии и могли создать архитектуру контейнеризации свою. MS всегда так делали покупали и внедряли, надо же как-то деньги оправдать. С какого то перепугу они решили пойти другим путем и у вас появился ответ "очевидно же". Почему?
Потому что все совсем не очевидно. Зачем MS встроил инородное ядро Linux в свою инфраструктуру. Это тренд монополизации рынка. Как говорил некто "Не можешь победить - возглавь".
Но я не вижу, того что вы утверждаете. MS отказалась от ie и edge в пользу движка хромиума, скайп не встроен, кортану можно не ставить. Место, время, память - тратятся незначительно. У меня один и тот же комп начиная с windows7. Ну на десятке быстрее все бегает.
минимум +1 гб оперативки для установки win10 по сравнению с win7 это незначительно?
поставьте и win10 pro по умолчанию фоном вам передаст скайп, onedrive и кортану. предустановят edge, xbox, список можно продолжить. Дадут два набора настроек, панель инструментов и параметры. в довесок кинут глючный wsl, который думаю допилят в будущем (что то мне кажется что в будущем виндовс будет делать бесплатные операционки на ядре linux). Или остаться в семерке и прикрутить докер это если еще получится. И десятка совсем не быстрее семерки. Хотя и в семерки "цирк со своими клоунами".
Имхо, семерка лучшее ОС от MS для конечного потребителя, там все клоуны прилизаны и приодеты боле мене одинаково.
Я свою точку зрения высказал и обосновал. Вашу точку зрения выслушал, мне она показалась несколько однобокой. почему то вы смотрите на то как это есть сейчас и считаете это де-факто так должно быть, и не смотрите на то как это могло быть, с учетом того что все карты (время-деньги-власть) у MS. Можете соглашать не соглашаться. Вам решать.
Docker — это платформа контейнеризации с открытым исходным кодом, с помощью которой можно автоматизировать создание приложений, их доставку и управление.
По вашему автоматизация тут лишнее слово?
Когда я плаваю, я шевелю ногами.
Ноги это орган для плавания?
Просто различайте специфический инструмент и инструмент, который в том числе используется тут, но его основное предназначение и собственно из-за этого идет приоретизация какие фичи в нем нужно разрабатывать, завязаны именно на контейнеризацию, а не автоматизацию.
Ничего не очевидно, Куда у вас Hyper-V исчез? купили Virtual PC зашли на рынок виртуализации, дальше расшили уже свои технологии и могли создать архитектуру контейнеризации свою
Виртуализация и контейнеризация это же очевидно сильно разные вещи, не взаимозаменяемые, и явно с точки зрения архитектуры вообще никак друг к другу не относятся.
Контейнеризация это не продолжение виртуализации, это другая технология, которая позволяет запускать изолированные процессы. Собственно поэтому MS и встроил WSL - ему проще было сделать контейнеризацию через виртуализацию =)
Но опять таки, это было сделано не столько для рантайма, сколько для упрощения разработки, ибо использовать контейнеры в WSL в продакшене не самая лучшая идея с точки зрения потребления ресурсов и поддержке такого решения.
минимум +1 гб оперативки для установки win10 по сравнению с win7 это незначительно?
1 гб сейчас стоит недорого, и это в общем-то нормальные требования.
Если я поставлю 1 гб для линукса, он заведется. Но делать на нем что-то будет проблематично, поскольку приложения едят много. У меня вот есть шелл скрипт для игры в шахматы по телеграму. И ему гигабайт оказалось маловато, потому что движок шахмат захотел полтора. Да, самому линуксу и 500 мбайт было с головой, но в таком Линуксе мало что можно запустить.
А если приложения хотят 1-2-3 гб, то относительно этого размера требования к операционке минимальны.
Зато в десятке зип открывается в проводнике, зато устройства детектятся легко и еще много фич, которые востребованы большим количеством пользователей.
Те, кому не надо, могут отключить все и обойтись меньшим, просто что они будут делать в 1 гб?
Не забывайте, что линукс - это не настольная система. Это серверная система изначально заточенная на очень гибкое использование ресурсов. В свое время был Windows Mobile, которая вполне себе могла есть очень мало, но MS провтыкали мобильный рынок по разным причинам, а в настольной системе не видят смысла ограничиваться 500 мб, надо же кортану встроить.
Когда я плаваю, я шевелю ногами.
Ноги это орган для плавания?
Пример не в ту калитку)) В вашем случае у человека нет ног, а орган сам по себе ходит ))
У вас получается проблем с настройками деплоев раньше не существовало. А если существовали то они как то сами по себе решались?
Если в контейнеризации от докера у разработчика решается вопрос интеграции ПО в автоматическом режиме Почему я не должен об этом говорить?
Виртуализация и контейнеризация это же очевидно сильно разные вещи, не взаимозаменяемые, и явно с точки зрения архитектуры вообще никак друг к другу не относятся.
Вы суть не поняли, встраивание WSL это не про docker и не про контейнеризацию. MS чихать на конечного потребителя. Их интересует рынок. Смотрите в глубь. Это идеальный момент начать подминать под себя рынок Linux. Если я поставлю 1 гб для линукса
Вин10 начнет боле мене нормально работать с 4гб для разработки Зато в десятке зип открывается в проводникеЗип еще в XP открывался, Рар в 10ку запилил. Только причем тут это? Есть операционка для разработки есть для остальных утех. на очень гибкое использование ресурсов
Теперь возвращаемся к первому посту и смотрим что я написал.
"Винда как сервер не нравится. Потому что с каждой новой версией она тащит в оперативку много больше ненужного гувна."
Пример не в ту калитку)) В вашем случае у человека нет ног, а орган сам по себе ходит ))
Как раз вопрос в ту калитку. Есть инструменты у которых есть основное назначение, и есть возможность использовать его в большой инфраструктуре. Но терминологию следует соблюдать.
У вас получается проблем с настройками деплоев раньше не существовало. А если существовали то они как то сами по себе решались?
Ну последние 15 лет настраиваю различные деплои различными способами. Проблемы решаются обдумыванием.
Вы суть не поняли, встраивание WSL это не про docker и не про контейнеризацию. MS чихать на конечного потребителя. Их интересует рынок. Смотрите в глубь
Рынок состоит из конечных потребителей. WSL - востребованная вещь, просто реализация пока еще хромает по удобству и комфорту. Но WSL2 по перформансу гораздо лучше чем WSL, а там через 5 лет посмотрим.
Изначальная идея-то правильная - линукс под рукой - востребован.
Вин10 начнет боле мене нормально работать с 4гб для разработки
Разработка бывает очень разная. Я нормально и на 500 мб могу разрабатывать свои штуки. Нужно уточнять что, кто, на чем пишет, что делает.
Кто-то вот разрабатывает видеокурсы, ему 4 гб маловато для монтажа.
Да пофиг сейчас на чем прогать
Я у себя на работе выделил сервер с убунтой под разработку (headless т.е. без X-ов)
накатил туда code-server (vs-code) и gogs (aka github on prem)
И теперь спокойно запускаю vscode в браузере из под винды ли, мака или той же убунты на моем основном рабочем компе.
Кстати с удивлением обнаружил, что мак почти полностью заменяет мне линукс для моих задач.
Так то я в основном сетевик и CLI моя родная среда. Но так же я лайтово занимаюсь прогерством.
Автоматизирую сетевые задачи. Не только скрипты, есть и чатботы и веб-приложения с развесистым бекендом и на докерах. Правда не PHP. Python да js в основном.
А вот чисто в винде когда прогать попытался - не осилил среду рабочую настроить
Там же по умолчанию вообще ничего нет. Все приходится отдельно ставить из разных не особо доверенных источников
Linux советуют тебе (ну если отбросить всякие нравится/не нравится, а только объективно) потому, что продукт твой будет в итоге крутится на линуксе. Т.е. чтобы ты, как разработчик, был ближе к инфраструктуре. Причем скорее всего тебе, как разработчику, нужно будет понимать, что сделать на линуксовом сервере, чтобы посмотреть свои логи и т.д. и т.п. Т.е. линукс на базовом уровне знать надо, а для этого проще всего его себе поставить и попользоваться.
Про докер: докер под винду и под линукс разный, если ты пишешь под линукс в итоге - ты в винде запускаешь докер, который запускается в виртуалке с линуксом. Т.е. фактически да - ты из-под винды работаешь в линуксе в каком-то виде.
Тут еще такой момент - майкрософт в win10 затащили с линукса уйму всего, начиная от того, что они сам линукс притащили, заканчивая тем, что и терминал новый пишут крутой. Т.е. сейчас разница между "сидеть на винде" и "сидеть на линуксе" уменьшается. Тот же visual studio code есть на обоих платформах, многие инструменты - браузерные по сути, соответственно работают везде. Т.е. сейчас переехать с винды на линукс проще, не надо учить новые инструменты типа IDE, но и остаться на винде легче теперь. Так что попробуй освоится с докером в винде, и на виртуалке в линуксе настроить всё аналогичное и посравнивать процесс работы.
Сам предпочитаю вести разработку под Linux. Т.к. приложения, которые я разрабатываю крутятся под Linux. Проще настроить окружение для отладки, чтобы отлавливать ошибки.
Меньше "у меня всё работает".
А так. Если для учёбы, то там где лично вам удобно.
Если для работы, то работать в том окружении, что и вся команда.
согласен. у меня девопс настроил докер для проекта под виндой. я у себя пытаюсь запустить, не работает. казалось бы девопс. да, ситуация "у меня всё работает".
Мой вариант - Linux с Docker'ом, и разработка вся там. Но есть много сотрудников и друзей, кто сидит на Windows, и разрабатывает со мной, или примерно то же самое, с использованием Docker.
Как по мне, да, нужно уже забыть про старый добрый OpenServer. Это всё-таки ясли.
Переходить на Linux или нет - дело лишь вкуса. Просто нужно понимать, что 90% веба крутится на нём, и в разработке обязательно с ним придётся сталкиваться. Но достаточно базового понимания, без постоянного использования "у себя", чтобы справляться с вызовами.