Какво е контейнер и контейнеризираща платформа и за какво можете да ги използвате!

Контейнери и контейнеризираща технология! Какво е това, как работи, как ни помага за по-бързото и лесно реализиране на нашите онлайн проекти? В тази статия ще отговорим на едни от най-често задаваните въпроси свързани с контейнеризиращата технология, включвайки и Docker!

Както вече ви разказахме, Docker е платформа, изградена на базата на контейнер технологията, която ви позволява да изграждате, доставяте и стартирате разнообразни приложения отделяйки ги от инфраструктурата. Тази иновация дава обещаваща заявка за промяна на начина, по който IT операциите се извършват в бъдеще!

Нека видим най-често задаваните въпроси свързани с контейнерите:

Какво са контейнерите и за какво са ни необходими?

Контейнерите са решението на проблема как да накараме един софтуер да работи надеждно/коректно, местейки го от една компютърна среда в друга. Например, от лаптопа на разработчика към тестова среда, от staging environment към production и много вероятно от физическа машина в дата център към виртуална машина в частен или публичен клауд.

Според създателя на Docker: „Проблемите се появяват, когато например поддържащата програмна/софтуерна среда не е идентична“. Ако тествате даден софтуер използвайки Python 2.7 и след това мислите да го реализирате на Python 3 със сигурност нещо ще се счупи. Или пък ще тествате на Debian, а след това реализацията на продукта ще е на Red Hat - бъдете сигурни, че ще се случат доста странни неща. Е, с контейнеризиращата технология и Docker това няма да ви се случи. Говорим за не просто различен софтуер, който може да прави простички разграничения. Това е софтуер, който ще "подкара" всичко, което трябва дори и на различна мрежова топология.

Как контейнерите се справят с проблемите?

Казано разбираемо, един контейнер съдържа цялата необходима среда за изпълнение: приложението, всички необходими библиотеки и други файлове за изпълнение, както и конфигуриращите файлове за стартирането, обединени в един пакет.

Чрез контейнеризиране на платформата за приложения и всичките и необходимости, разликите в OS (операционна система) дистрибуциите и базисната инфраструктура се oеднаквяват.

Това звучи като виртуализация. Каква е разликата?

С виртуализиращата технология, пакетът, който може да бъде прехвърлян е виртуална машина и включва цялостна OS както и приложението. Физически сървър поддържащ три виртуални машини ще има хипервайзор и три отделни операционни системи, работещи на него.

За да направите разликата - сървър, на който вървят 3 контейнизирани приложения (с Докер) работи една операционна система, и контейнерите споделят ядрото на операционната система. Споделените части на ОS са read only, докато всеки контейнер има своя собствена монтираща система за запис. Това означава, че контейнерите са доста по-леки и използват значително по-малко ресурси от виртуалните машини.

Каква е разликата на практика?

Контейнерът може да бъде само десетки мегабайти, докато виртуалната машина с цялата си ОС може да бъде няколко гигабайта. И поради това, единичен сървър може да хоства далеч повече контейнери отколкото виртуалната машина. На виртуалните машини може да им отнеме няколко минути, докато заредят операционната си система и да стартират приложението, което хостват, а контейнеризираното приложение може да бъде стартирано почти мигновено.

Каква е разликата между Docker и контейнерите?

Docker стана нарицателно за контейнер технологията, тъй като той най-успешно да я популяризира. Но контейнер технология не е от сега: изградена е преди почти 10 години в Linux, под формата на LXC (Linux Containers), като подобна виртуализация на ниво ОS е предлагана и от FreeBSD jails, AIX Workload Partitions and Solaris Containers.

Забележителна алтернатива на Docker е Rkt, команден порт за стартиране на контейнерни приложения от създателите на CoreOS. Rkt може да се справи с Docker контейнери, както и с такива, които са в съответствие с нейната App Container Image спецификация.

На каква операционна система трябва да бъдат стартирани Docker и Rkt?

LXC (и libcontainer, собствена контейнер технология на Docker, която замества LXC) са Linux базирани контейнери, така че всяка Linux дистрибуция със сравнително модерен кернел, версия 3.8 или по-нова може да ги стартира на x64 хардуер. Има и специално създадени Linux дистрибуции за стартиране на контейнери - CoreOS, Red Hat's Project Atomic, Canonical's Snappy Ubuntu и VMware's Project Photon.

Имали контейнер решения, които да използваме с рекламна цел?

Да, има и те включват следното: Docker Subscription for Enterprise – Пакетно решение обединяващо Docker Hub Enterprise, Docker Engine и съпорт.

CoreOS Tectonic – Интеграция на CoreOS софтуер, който включва управляваща конзола на работните процеси и табло, интегрирани регистри за изграждане и споделяне на Linux контейнери и допълнителни инструменти за автоматизиране на разгръщане и персонализиране на ъпдейтите, заедно с Kubernetes платформата на Google за управление на контейнери.

Какво става ако съм Windows потребител? Мога ли да използвам контейнери

От Microsoft обявиха, че ще пуснат Docker котейнеризиращата технология на Windows Server, както и ще въведат Windows Server контейнери. Очаква се и олекотена версия на Windows Server наречена Nano Server, специално разработена за стартиране на контейнери.

Контейнерите ще заместят ли напълно виртуализацията?

В краткосрочен план това е малко вероятно. Наличните управляващи инструменти, отговорни за организирането на голям брой контейнери са далече от най-разпространените софтуери като VMware vCenter или Microsoft's System Center, които биват използвани за управление на виртуални инфраструктури. Още повече двете технологии – контейнеризиращата и виртуализираща могат да се разглеждат като допълващи една друга, а не както конкуренти такива.

И ще завършим с цитат на един от водещите специалисти в областта Хайтауър „Контейнерите не променят нищо, може да ги използвате и ако не искате да управлявате хардуер, то тогава можете да използвате виртуализация.“

Етикети: #docker-kontejneri #kontejnerizatsiya #ueb-prilozheniya #docker-primeri #linux-containers #lxc #virtualizatsiya #prilozheniya