LINUX.ORG.RU

Вирутализация: когда не рекомендуюется использовать контейнеры, а рекомендуют VM

 , , , ,


4

3

Привет.

Практически во всех статьях про сравнение контейнеров и VM, всё сводится к тому, что контейнеры по всем параметрам лучше. И тогда не понятно когда и зачем использовать виртуалки.

В каких случаях противопоказано использовать контейнеры, а следует использовать именно виртуальные машины?

★★★★★

Последнее исправление: Kroz (всего исправлений: 1)

Ответ на: комментарий от Clockwork

а контейнер может быть только контейнером.

Нагло врут, содержимое контейнера можно скопировать на раздел и доустановиновь ядро и прочие потроха. Пробовал, работает.

einhander ★★★★★
()
Ответ на: комментарий от Kolins

IMHO контейнеры и виртуальные машины - это инструменты под разные задачи.

Смотря какие контейнеры, docker да, а lxc это почти виртуалка. Я пробрвсывал видеокарту, мышку и клаву в контейнер. Пользователь даже не догадывался о том, что он работает в контейнере. Рядом работала виртуалка с виндой, с пробросом на другое железо.

einhander ★★★★★
()
Ответ на: комментарий от anonymous

Чего нет и причём тут FreeBSD вообще?

Сложно и избыточно - это поднимать какие-то лишние сущности вместо простого списка доступа, когда нужен именно список доступа.

firkax ★★★★★
()
Ответ на: комментарий от Kroz

Nix. Guix. Любой другой нормальный, а не накидывающий все без разбору в помоечку в / (0 штук).

t184256 ★★★★★
()
Ответ на: комментарий от firkax

Так, что при нормальной архитектуре кода для решения вопросов автоматизации и масштабирования не требуется прятать софт в коробки. Прячут его там, где «денег нет, времени нет, сделайте тяп-ляп как-нить авось заведётся».

Вот тут орнул немного :)

Docker и средства оркестрации нужны там, где есть нагрузки и надо масштабироваться на лету. В облаке, то есть, в основном. И как раз это стоит дохрена денег, в общем-то, если у тебя нагрузки и пользователей миллион.

И насчет «прятать» - это не про прятать, конечно. Docker дает 1. воспроизводимую среду сборки и исполнения. Если я в Dockerfile один раз написал, что мне нужен образ, скажем, ubuntu:20.04, или там, alpine (5,6 Мб), или вообще busybox (чот около 3 Мб), то он каждый раз один и то же будет подтягиваться, при условии, что мы указали конкретную версию (тег) образа. В принципе, виртуальная машина предоставляет то же удобство, конечно. Но тут верно про оверхед говорили. И да, размеры образов заценили? Сравним с виртуалкой + ОС + ваш софт, который надо запускать.

И если я при сборке образа доустановлю в docker образ какие-то пакеты, они каждый раз будут теми же самыми пакетами в момент docker build. И, при относительно небольшом оверхеде, это действительно очень годное решение для воспроизводимого деплоя. В конкретной среде, которую ты сам прописал в Dockerfile.

Для промышленной разработки, а не поиграть дома, это просто современный удобный инструмент. Да и для поиграть дома тож ничего. В я докере даже на Raspberry Pi могу позапускать какую-нибудь базу данных на поиграть. И в рабочую систему можно что угодно принести поиграть не засирая ее…

  1. Про масштабирование не забыл сказать? k8s тебе поднимет еще парочку контейнеров, если первый не справляется. Перезапустит контейнер с умершей программой (без потери аптайма, на минуточку), и вот это все. Наверное, можно и виртуалку так же перезагружать, но виртуалка-то дороже в смысле процессорного времени, не? :) Там тоже можно, по идее, ресурсы динамически выделать по мере необходимости, но с контейнерами это выглядит попроще. Уж не говоря про удобство администрирования, логгирования и трейсинга. Так что как бы вопрос снова не оказался в деньгах :)
paddlewan
()

Вирутализация: Что это такое?

anonymous
()
Ответ на: комментарий от paddlewan

Docker и средства оркестрации нужны там, где есть нагрузки и надо масштабироваться на лету. В облаке, то есть, в основном. И как раз это стоит дохрена денег, в общем-то, если у тебя нагрузки и пользователей миллион.

По поводу нагрузок - всё наоборот. Когда нагрузки большие, тебе точно не нужен ни докер, ни виртуалки. Большие нагрузки - это когда у тебя на каждый сервис по много серверов, физических. То есть вся машина физически выделена под одну единственную функцию, рядом стоит ещё одна точно такая же, а в соседней стойке, а может и с соседней комнате - сервера под другую функцию. Отдавать от этих мощностей ещё и оверхед на всякую чушь будет только идиот.

И насчет «прятать» - это не про прятать, конечно.

Конечно, прятать. Потому что:

  1. воспроизводимую среду сборки и исполнения.

Её даёт регламент на ОС и её версию, установленную на сервер.

размеры образов

Размер пакета с софтом.

И если я при сборке образа доустановлю в docker образ какие-то пакеты, они каждый раз будут теми же самыми пакетами в момент docker build.

Сборочный скрипт - не изобретение докера.

Перезапустит контейнер с умершей программой (без потери аптайма, на минуточку), и вот это все. Наверное, можно и виртуалку так же перезагружать, но виртуалка-то дороже в смысле процессорного времени, не?

while true; do ; /path/to/program arguments; done

Вот тебе перезагрузка без виртуалок, оверхеда и доп. софта, в одну строчку на шелле (хотя я бы добавил sleep 1 между ребутами). Что ты упёрся то в свои коробки? Программу можно запустить просто так, на настоящей ОС и в настоящей файловой системе. Для того, чтобы этот бинарник туда автоматически положить, вообще не важно, где и как он будет запускаться.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)
Ответ на: комментарий от firkax

Хочешь добрый совет? Никому больше такого не говори. Так как, похоже, ты не имеешь ни малейшего представления о том с какими задачами и проблемами сталкиваются современные софтверные компании.

Чтобы нагнать упущенное, рекомендую зайти на Youtube и несколько дней взахлёб смотреть разные видео по контейнерам, Kubernetes, DevOps (там тучища тулов) - много разных. Пока не появится понимание какие проблемы они решают. Например, мне нравится канал TechWorld with Nana: там рассказывют не слишком глубоко, зато понятно и с примерами. Если всё ещё не понятна проблематика, просмотри какой-то курс AWS Certified Solution Architect (любой какой есть на Youtube). Только так. Извини, постом на ЛОР тебе не ответить, так как ты не знаешь слишком многого и слишком фундаментальных вещей.

Kroz ★★★★★
() автор топика
Ответ на: комментарий от einhander

lxc это почти виртуалка

Я уже и забыл про них, на слуху сплошные docker и podman. Ну да, lxc вполне себе виртуалка, только с ограничением на выбор ОС и ядро от хост-системы

Kolins ★★★★
()
Ответ на: комментарий от Kroz

рекомендую зайти на Youtube и несколько дней взахлёб смотреть разные видео

какой крутой совет, сразу видно что ты профи

Хочешь добрый совет? Никому больше такого не говори

и этот тоже отклоню

firkax ★★★★★
()
Ответ на: комментарий от firkax

while true; do ; /path/to/program arguments; done

Раз у тебя так хорошо получается, то добавь сюда еще немного кода, чтобы работало даже тогда, когда умирает весь хост (чтобы программа автоматически перезапустилась на другом хосте), чтобы проверка на работоспособность была более интеллектуальная, а не просто когда завершается процесс(например, программа может зависнуть, вести себя некорректно, и т.д.), чтобы автоматически масштабировалось (возросла нагрузка -> запустилось больше копий программы, спала - дополнительные экземпляры завершились), чтобы при выкатке новых версий программы они автоматически подтягивались, и… вот у тебя почти уже k8s.

bigbit ★★★★★
()
Последнее исправление: bigbit (всего исправлений: 1)
Ответ на: комментарий от Minona

оно на cpu-bound операциях так проседать должно, а если видюху пробросить и сидеть на GPU вычисления делать, то GPU будет на 90-95% работать (ну я так думаю, в реальности все может быть иначе)

tz4678 ★★
()
Ответ на: комментарий от tz4678

(отходил посрать) че я этот GPU вспомнил? тут адепт кидал ссылку на какого-то педиковатого зумера-блогера, у которого FPS в виртуалке был почти таким же как на хосте. в такое я поверить могу (по вышеописанной причине), но там нет таких ньюансов как загрузка видеокарты, фреймрейт и пр, тот дебил мог банально забыть выключить V-Sync или игрушка какая-то с захардкоженным локом… я ту статью особо не читал, но осуждаю (да я вообще редко читаю дальше первого предложения, что тут в описаниях тем)

tz4678 ★★
()
Ответ на: комментарий от tz4678

да и тут категоричным тож не стоит быть. смотря что тестируем. тот же kvm - по сути работает так же как docker, те это контейнеризация… термины очень размытые. а если по скорости они одинаковы, то надо выбирать удобство (докер/подман). винда или бзда уже ряльно эмулируются с просадками. я мож упустил что-то и в той статье про kvm речь шла, мне лень искать

tz4678 ★★
()
Ответ на: комментарий от Kroz

Хочешь добрый совет? Никому больше такого не говори.

Присоединюсь к совету, лол :)

paddlewan
()

самореклама, юзеры контейнеров часто находятся в среде кумиропоклонников, т.е. это как пиарить свой любимый дистрибутив который на самом деле не твой и просто тебе доход приносит.

имхо на контейнерах легко деньги делать т.к. за тебя в контейнере уже все сделали, остается просто чужой труд развернуть и потом всем рассказывать каким трудом потом и кровью ты делаешь такие чудеса, одним только однострочником

nanosecond
()
Последнее исправление: nanosecond (всего исправлений: 2)

Не, не лучше. Сломал один контейнер - сломал всё.

targitaj ★★★★★
()
Ответ на: комментарий от targitaj

и что? если не включить в биосе аппаратную виртуализацию, то в том же Virtual Box нельзя будет выбрать 64-битную машину. там еще просадка жеще будет чем 20-40%. ты хотел опровергнуть факт того что эмуляция всегда тормозит, даже с включенными AMD-V/Intel VT?

tz4678 ★★
()
Ответ на: комментарий от Kroz

Видимо, с версии 12c стало можно. Буква ‘с’ в версии как бы намекает на cloud. Мои знания остановились на Oracle 11g.

bigbit ★★★★★
()
Ответ на: комментарий от tz4678

будучи полным днищем и типичным нытиком-смузихлебом

судя по первому твоему комменту - это ты про себя

anonymous
()
Ответ на: комментарий от Kroz

по-хорошему, это всё делается на сетевом уровне, будь то железки или SDN. ну, в нормальных конторах с деньгами.

anonymous
()
Ответ на: комментарий от Kroz

А что, контейнеры и виртуально крутят только разрабы?

Большая часть корпоративной инфры - гетерогенная, у тебя будут линуксы, видна, фря и, не приведи, aix с hpux. Расскажи мне, как ты этот зоопарк будешь в контейнерах пускать.

CaveRat ★★
()
Ответ на: комментарий от Legioner

А что, она у ВМ заточена? А то малварь, сбегающая из виртуалки не в курсе.

И второй момент - малваре может быть и не нужно выбираться из виртуалки. Майнеру или криптолокеру пофигу, где работать, эффект примерно один

CaveRat ★★
()
Ответ на: комментарий от CaveRat

А что, она у ВМ заточена?

Да.

А то малварь, сбегающая из виртуалки не в курсе.

Ты ещё расскажи про буткиты. Виртуалки широко используются в индустрии хостинга, в виртуалках крутится что угодно и ничего никуда не сбегает. Сходи на digitalocean и сбеги, а мы посмотрим, попкорна только надо закупить.

И второй момент - малваре может быть и не нужно выбираться из виртуалки. Майнеру или криптолокеру пофигу, где работать, эффект примерно один

Лимиты по RAM/CPU настраиваются и в виртуалках и в контейнерах, тут разницы в безопасности нет.

Legioner ★★★★★
()
Последнее исправление: Legioner (всего исправлений: 1)
Ответ на: комментарий от Legioner

Сегодня OpenVZ вроде не очень распространён, но когда его массово предлагали из него часто сбегали?

sin_a ★★★★★
()
Ответ на: комментарий от sin_a

Под контейнерами я понимаю docker (точней cgroups и другие API, на которых он основан), под виртуализацией kvm. Про другие контейнеры я ничего не знаю, может быть они и безопасные, но толку это обсуждать, если оно не актуально.

Legioner ★★★★★
()
Ответ на: комментарий от Legioner

Да, OpenVZ сегодня используется редко. Но lxc, насколько мне известно, вполне, хотя вероятно и не у хостеров. Во всяком случае у тебя есть возможность выбора.

sin_a ★★★★★
()
Ответ на: комментарий от Legioner

Да

Там что-то такое стали прикручивать относительно недавно. Именно заточенное под защиту хоста от малваре.

Ты ещё расскажи про буткиты. Виртуалки широко используются в индустрии хостинга, в виртуалках крутится что угодно и ничего никуда не сбегает. Сходи на digitalocean и сбеги, а мы посмотрим, попкорна только надо закупить.

Сходил на nvd, смотри, что нашел:

CVE-2020-3962, CVE-2020-3963, CVE-2020-3964, CVE-2020-3965, CVE-2020-3966, CVE-2020-3967, CVE-2020-3968, CVE-2020-3969, CVE-2020-3970, CVE-2020-3971: VMware ESXi, Workstation Pro / Player, Fusion Pro, Cloud Foundation: Vulnerabilities in SVGA, graphics shader, USB driver, xHCI/EHCI, PVNVRAM, and vmxnet3 can cause virtual machine escape

И это еще не рассматриваем ZombieLoad (этому вообще пофигу, виртуалка, контейнер - проблема прямо в проце)

Лимиты по RAM/CPU настраиваются и в виртуалках и в контейнерах, тут разницы в безопасности нет.

Мой поинт в том, что разница для безопасника только в том, какие именно контроли внедрять, а мышление типа «ну, это ж виртуалка, из нее не убегут» - порочно по своей сути.

CaveRat ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.