![Как да конфигурирате SSH влизане без парола на openSUSE 15.3](/f/9142ecb58a6384cdeb2bd508e479f2cb.png?width=100&height=100)
С течение на времето, тъй като търсенето на бързо тестване и внедряване на приложения нараства заедно с по -бърз бизнес цикли, организациите бяха принудени да правят нововъведения, за да бъдат в крак с бързо развиващия се бизнес околен свят.
Стремежът за модернизиране на приложения и изграждане на нови за създаване на гъвкави работни потоци доведе до концепцията за използване на контейнери. Технологията за контейнери е почти толкова стара, колкото и виртуализацията. Контейнерите обаче не предизвикаха много вълнение, докато Докер избухна на сцената през 2013 г. и предизвика яростен интерес сред разработчиците и други ИТ специалисти.
В момента всички гигантски технологични образувания като Google, Amazon, Microsoft, и червена шапка за да споменем, че няколко са скочили на крачка.
Едно от предизвикателствата, пред които са изправени разработчиците, е разликата в изчислителните среди на всеки етап от разработването на софтуер. Проблеми възникват, когато софтуерната среда е различна от един етап на друг.
Например, едно приложение може да работи безпроблемно в среда за тестване, като използва стартиране Python 3.6. Приложението обаче се държи странно, връща някои грешки или се срива напълно, когато бъде пренесено в работеща работна среда Python 3.9.
Контейнерите дойдоха на сцената, за да се справят с това предизвикателство и да гарантират, че приложенията работят надеждно при преместване от едно изчисление среда до следващия във всеки етап от разработването на софтуер - от компютъра на разработчиците до производството околен свят. И не само софтуерната среда може да доведе до такива несъответствия, но и разликите в топология на мрежата и политики за сигурност.
А контейнер е изолирана софтуерна единица, която пакетира целия двоичен код, библиотеки, изпълними файлове, зависимости и конфигурационни файлове в един пакет по такъв начин, че приложението да работи безпроблемно, когато бъде пренесено от една изчислителна среда към друг. Той не идва с изображение на операционна система, което го прави лек и лесно преносим.
Изображението на контейнера е самостоятелен, лек и изпълним пакет, който обединява всичко необходимо за изпълнение на приложението. По време на изпълнение изображение на контейнер се трансформира в контейнер. В случай че Докер, например, изображение на Docker се превръща в контейнер на docker, когато се изпълнява на Docker Engine. Докер е среда за изпълнение, използвана за изграждане на контейнерни приложения.
Контейнерите работят в пълна изолация от основната операционна система, а контейнерните приложения винаги ще работят последователно, независимо от компютърната среда или инфраструктурата. Поради тази причина разработчикът може да разработи приложение от комфорта на този лаптоп и лесно да го разгърне на сървър.
Последователността и надеждността на работещите контейнери дават спокойствие на разработчиците да знаят, че техните приложения ще работят според очакванията, независимо къде са разположени.
Често срещано нещо, което контейнерите и виртуалните машини споделят, е, че те работят във виртуализирана среда. В известен смисъл контейнеризацията е форма на виртуализирана технология. Контейнерите обаче се различават от виртуалните машини по повече от един начин.
Виртуална машина, наричана още виртуален екземпляр или VM накратко е емулация на физически сървър или компютър. Виртуализацията е технология, която дава възможност за създаване на виртуални машини. Концепцията за виртуализация датира от началото на 70 -те години на миналия век и поставя основите на първото поколение облачни технологии.
При виртуализацията се създава абстракционен слой върху сървър или компютърен хардуер. Това прави възможно хардуерните ресурси на един сървър да бъдат споделяни между множество виртуални машини.
Софтуерът, използван за създаване на абстракционен слой, се нарича хипервизор. Хипервизорът абстрахира виртуалната машина и гостуващата операционна система от действителния гол метал или компютърен хардуер. По този начин виртуална машина се намира на върха на хипервизора, което прави хардуерните ресурси достъпни благодарение на слоя абстракция.
Виртуалните машини изпълняват пълна операционна система (гост OS), която не зависи от основната операционна система (хост операционна система), на която е инсталиран хипервизорът. След това гостуващата ОС предоставя платформа за изграждане, тестване и внедряване на приложения заедно с техните библиотеки и двоични файлове.
[ Може да харесаш също: Как да инсталирате KVM на CentOS/RHEL 8 ]
Има два вида хипервизори:
Това хипервизор се инсталира директно на физически сървър или основния хардуер. Няма операционна система, която да седи между хипервизора и хардуера на компютъра, откъдето идва и името на етикета чист метал хипервизор. Той осигурява отлична поддръжка, тъй като ресурсите не се споделят с хост операционната система.
Поради своята ефективност, хипервизорите тип 1 се използват най -вече в корпоративни среди. Доставчиците на хипервизор тип 1 включват VMware Esxi и KVM.
Това също се счита за хостван хипервизор. Той е инсталиран върху хост операционната система и споделя основните хардуерни ресурси с хост операционната система.
Хипервизорите тип 2 са идеални за малки изчислителни среди и се използват най -вече за тестване на операционни системи и изследвания. Доставчиците на хипервизор тип 2 включват Oracle VirtualBox и VMware работна станция Pro.
Виртуалните машини обикновено са с огромен размер (могат да заемат няколко GB), бавно се стартират и спират и поглъщат много системни ресурси, което води до прекъсвания и бавна производителност поради ограничените ресурси. Като такава, виртуалната машина се счита за обемиста и е свързана с високи режийни разходи.
За разлика от виртуалната машина, контейнерът не изисква хипервизор. Контейнер се намира върху физически сървър и неговата операционна система и споделя същото ядро като операционната система, наред с други неща като библиотеки и двоични файлове. На една и съща система могат да работят множество контейнери, всеки от които изпълнява свой собствен набор от приложения и процеси от останалите. Популярните контейнерни платформи включват Докер и Подман.
За разлика от виртуалните машини, контейнерите работят в пълна изолация от основната операционна система. Контейнерите са изключително леки-само няколко мегабайта-заемат по-малко място и са щадящи ресурсите. Те са лесни за стартиране и спиране и могат да обработват повече приложения, отколкото виртуална машина.
Контейнерите осигуряват удобен начин за проектиране, тестване и внедряване на приложения от вашия компютър директно в производствена среда, било то в помещението или в облака. Ето някои от предимствата на използването на контейнерни приложения.
Преди контейнерите имахме старомоден монолитен модел, при който цяло приложение, включващо както интерфейсни, така и бекенд компоненти, ще бъде обединено в един пакет. Контейнерите дават възможност за разделяне на приложение на множество отделни компоненти, които могат да комуникират помежду си.
По този начин екипите за разработка могат да си сътрудничат в различни части на дадено приложение, при условие че не са направени големи промени по отношение на начина, по който приложенията взаимодействат помежду си.
На това се основава концепцията за микроуслуги.
По -голямата модулност означава по -голяма производителност, тъй като разработчиците могат да работят по отделни компоненти на приложението и да отстраняват грешки много по -бързо от преди.
В сравнение с виртуалните машини и други конвенционални компютърни среди, контейнерите използват по -малко системни ресурси, тъй като не включват операционна система. Това предотвратява ненужните разходи за закупуване на скъпи сървъри за изграждане и тестване на приложения.
Поради малкия си обем, контейнерните приложения лесно се разгръщат в множество изчислителни среди / операционни системи.
Контейнерите позволяват бързо разгръщане и мащабиране на приложения. Те също така осигуряват така необходимата гъвкавост за внедряване на приложения в множество софтуерни среди.
Контейнерите играят ключова роля в DevOps и би било невъзможно да си представим как би била ситуацията без контейнерни приложения. И така, какво носят контейнерите на масата?
Първо, контейнерите са в основата на архитектурата на микроуслугите, което позволява изграждането, разгръщането и мащабирането на градивни елементи на цяло приложение. Както бе споменато, това прави по -голямо сътрудничество и бързо разгръщане на приложения.
Контейнеризацията също играе важна роля за улесняване на CI/CD тръбопроводите, като осигурява контролирана и последователна среда за изграждане на приложения. Всички библиотеки и зависимости са пакетирани заедно с кода в едно цяло за по -бързо и лесно разгръщане. Тестваното приложение ще бъде точният софтуер, който ще бъде внедрен в производството.
В допълнение, контейнерите подобряват разпространението на пачове и актуализации, когато дадено приложение е разделено на множество микрослужби, всеки в отделен контейнер. Отделни контейнери могат да бъдат проверени, закърпени и рестартирани, без да се прекъсва останалата част от приложението.
Всяка организация, която се стреми да постигне зрялост в DevOps трябва да обмислят използването на силата на контейнерите за гъвкаво и безпроблемно разполагане. Предизвикателството е да знаете как да ги конфигурирате, защитите и безпроблемно да ги разгърнете в множество среди.