Започвате ли с инструментите за визуализация? Или хакнете пътя си през технологичния разговор за контейнери и виртуални машини.
Виртуализацията включва процес, при който отделни ресурси като RAM, CPU, мрежи и дискове могат да бъдат „виртуализирани“ и разглеждани като множество ресурси. Ключовата разлика е, че контейнерите могат да виртуализират само софтуерни слоеве, изградени над нивото на операционната система. За разлика от тях, виртуалните машини могат да виртуализират цели машини към хардуерните слоеве.
Въпреки че има ясно разграничение, има списък от прилики между контейнери и виртуални машини, включително как подобряват ИТ ефективността, осигуряват преносимост към приложения, подобряват DevOps и жизнения цикъл на разработка на софтуер (SDLC). Повече за това по-късно.
Тази публикация разбива контейнери и виртуални машини, навлиза в предимствата и на двете и завършва с бележка относно избора на правилния инструмент въз основа на вашите нужди. Предполага се също, че имате необходимите познания за контейнери и виртуални машини. Ако не сте, все още е отлично място да започнете.
Съдържание
История на виртуализацията
Преди разпространението на контейнерите, виртуалните машини бяха единственото решение за изолиране на среди в рамките на физическа инфраструктура. Но едва през 2013 г. Docker пусна първия си софтуер за контейнеризиране.
И оттогава може би сте забелязали широкия интерес към контейнерите и как те оформят пейзажа на облачните изчисления.
Много разработчици са спечелили повече интерес, особено към предимствата на гъвкавото развитие, предлагано от контейнерите. Все пак трябва да имате предвид, че контейнерите и виртуалните машини са изградени върху оптимизиране на ресурсите в съществуващата физическа инфраструктура.
Как работи виртуализацията
Виртуализацията включва използване на софтуер за създаване на абстракционен слой върху компютърен хардуер, позволяващ хардуерните елементи, да речем по-специално от един компютър, да бъдат разделени на множество компютри. Такъв софтуер се нарича хипервизор.
Хипервизорът позволява на различни операционни системи да работят едновременно, споделяйки общи физически изчислителни ресурси. Когато се използва на физически компютри или сървъри в центрове за данни, това ще позволи на физическите компютри да отделят компютърните операционни системи (ОС) и приложенията от хардуера. След това може да се раздели на множество „виртуални машини“.
Какво е контейнер?
Източник: docker.com
Контейнерите са лек, гъвкав метод за работа с виртуализация. И тъй като те не се нуждаят от хипервайзори, те ви дават право на по-бързо предоставяне на ресурси и бърза наличност за нови приложения.
Можете също така да разглеждате контейнерите като софтуерни пакети, съдържащи зависимости, необходими за изпълнение на софтуерното приложение за управлявано приложение.
Зависимостите включват системни библиотеки, външни кодови пакети (от трети страни) и включването на всички други приложения на ниво операционна система. Всички зависимости, включени в контейнера, съществуват в стекови нива, по-високи от операционните системи.
Плюсове 👍
Минуси 👎
Популярни доставчици на контейнери
Ето някои добре известни доставчици на контейнери:
Какво е виртуална машина?
Източник: docker.com
Виртуалните машини (VM), от друга страна, са големи (тежки) софтуерни пакети, осигуряващи пълна емулация на хардуерно оборудване от ниско ниво като централен процесор (CPU), диск и мрежови устройства.
Виртуалните машини ви позволяват да стартирате множество машини на различни операционни системи, но все още в един компютър. Както споменахме по-рано, хипервайзорите са начинът, по който виртуалните машини взаимодействат с физическите компютри. Хипервайзорите разделят виртуалните машини една от друга и разпределят ресурси като памет и процесори между тях.
Плюсове 👍
Минуси 👎
Популярни доставчици на виртуални машини
Ето няколко популярни доставчици на виртуални машини:
Контейнери срещу виртуални машини
Въпреки че виртуалните машини съществуват от толкова дълго време, те се заменят с контейнери за подобни цели. Видяхте плюсовете и минусите и на двата технологични стека. Ето основните разлики.
FeatureContainers Виртуални машиниГолеми и по-малко преносими, базирани на всяка виртуална машина със своя операционна система. Виртуалните машини заемат голямо пространство, измерено в гигабайти.
VM не са преносими. Нямат собствена операционна система. Имат собствени операционни системи и по този начин изпълняват допълнителни задачи, включително; изпълняващи програми, несъвместими с хост ОС, множество програми на различни операционни системи и изпълняващи приложения, които не могат да споделят ресурси и функционалности на операционната система. Размер и преносимост Малки и преносими дължими на споделящата операционна система. Контейнерите заемат място, измерено в мегабайти.
Контейнерите могат да се преместват между различни компютри. Контейнерите се изпълняват по-бързо от виртуалните машини поради тяхната вече работеща операционна система. Отнема секунди за стартиране. Скоростните виртуални машини по време на зареждане са бавни, тъй като първо трябва да стартират собствените си операционни системи. Зареждането отнема няколко минути. Цената на виртуалните машини е сравнително по-висока — голямата нужда от ресурси и нива на сложност и високата цена. Достъп до ресурси Контейнерите имат достъп до всички ресурси в хост машината. Виртуалните машини използват специфичните ресурси, които са им разпределени от хипервайзора. Сигурност По-малко сигурен. Контейнерите, работещи на операционен софтуер на споделен хост, са уязвими, когато хост ОС е компрометирана. Сложно внедряване; нивото на сложност на виртуалните машини показва, че те се нуждаят от повече време за развитие. Внедряването не е по-различно. ВнедряванеЛесно внедряване; това се дължи на неговата природа, „самостоятелна“ и има лека лекота при внедряване, преместване или надграждане. Цената на виртуалните машини е относително по-висока. Голямата нужда от ресурси и нива на сложност, заедно с това, е висока цена. Разходите Цената на контейнерите е сравнително по-ниска, защото има по-малко изисквания, отколкото при виртуалните машини. Цената на виртуалните машини е сравнително по-висока — високата нужда от ресурси и сложност нива, заедно с това висока цена.
Как да използвате контейнери и виртуални машини едновременно
Ако сте се чудили дали е възможно да използвате контейнери и виртуални машини заедно, отговорът е да. Въпреки че практическите случаи са ограничени. Можете да създадете VM, за да емулирате конкретни хардуерни конфигурации и да инсталирате операционна система.
След като вашата VM зареди операционната система и е напълно функционална, вие вече сте оборудвани с емулирана изчислителна система със специфичен хардуер, на който можете да инсталирате контейнери.
Добър пример за илюстриране на тази конфигурация е експериментирането със система за внедряване на чипове. Някои популярни методи за вградени в чип изчислителни устройства като платки за разработка BeagleBone и Raspberry Pi могат да бъдат емулирани като виртуални машини за експериментиране с оперативни (работещи) контейнери преди тестване на действителен хардуер.
Друго предимство на използването на обединението на контейнери и виртуални машини е повишаването на сигурността. Например, можете да разположите контейнери във виртуални машини. Помислете за пример, при който десет контейнера са разположени на един компютър, за да демонстрирате как това е полезно.
Ако компютърът бъде компрометиран, вие сте изложени на риск да засегнете десетте контейнера. Решението се постига чрез разпределяне на десетте контейнера в десет виртуални машини. Ако една виртуална машина бъде компрометирана, другите части на системното приложение обикновено продължават да работят.
Заключителни думи
Ако имате точни хардуерни спецификации за вашия проект или разработвате върху един хардуер и все още се насочвате към друг, като Windows срещу MacOS, би било най-добре да използвате виртуални машини. В други случаи, когато изискванията са „само софтуер“, най-добрият вариант би бил използването на контейнери.
В повечето случаи нуждите ви ще бъдат задоволени от всеки от вашите избори. За да изберете най-добрия, разберете вашите нужди от ресурси и свързаните компромиси. Следователно правилният инструмент ще зависи от вашия проект.
Ако имате нужда от бързо и ефективно внедряване, контейнерите са най-добрият избор. Ако вашата организация трябва да виртуализира цялостна операционна система на хардуер, виртуалните машини са най-добрите. И ако искате да увеличите максимално сигурността, комбинацията от двете би била най-добра; обаче има свързани разходи.
И накрая, както контейнерите, така и виртуалните машини са валидни решения. Въпреки това, вашите спецификации трябва да бъдат решаващият водещ фактор. Ако все още се нуждаете от повече насоки и задълбочено разбиране, предлагам да се насочите към Docker срещу виртуална машина.