Docker контейнерите vs. виртуалните машини!

Docker контейнерите vs. виртуалните машини!

Е ли Docker контейнерът виртуална машина или не e? Има ли разлики, а какво да кажем за приликите?

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

Каква е разликата с виртуалната машина? Или накратко милисекунди vs. минути!

Много често сравняват контейнерите с виртуализацията, но да си го кажем честно, това не е много вярно. Ето защо това е така:

При виртуалните машини ще откриете напълно инсталирана операционна система (ОС) със съответното натоварване от драйверите на виртуализиращото устройство, управлението на паметта и т.н., включвайки и по поне още една ОС за всяко приложение, докато Docker контейнерите използват споделени ОС и драйвери на хоста. Контейнерите разполагат с различна архитектурна структура, позволяваща им да бъдат много по ефективни, бързи, преносими и със значително по-добра производителност! Имат сходна изолираност на ресурсите и разпределение на ползите като виртуалните машини.

vs1

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


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

docker-container-processes1

В допълнение, работещият процес изисква определен брой файлове от средата (обикновено in /etc или /var/lib в Linux) и това не е само за config файла или да съхрани данните на програмата. Например, всяка програма необходима за SSL връзка се нуждае от root CA сертификат, повечето програми имат нужда от локална информация, и т.н. Всички тези споделени библиотеки правят процеса много зависим от средата на файловата му система. Това, което контейнерите правят е да капсулират традиционните процеси плюс средата на файловата система.

Предимствата на Docker контейнерите:

  • Скалируемост- Бързината на работа контейнерите, позволяват скалируемостта да се случва в реално време - без значение дали ще се увеличава или намалява;
  • Преносимост portable - Този тип платформа позволява висока преносимост на информация при работни натоварвания. Контейнерите могат да работят на локалните машини на разработчиците, на физически или виртуални машини в дата центрове или на клауд сървъри;

  • Компакност - Олекотена технология и бързина. Контейнер технологията предоставя надеждна и ефективна алтернатива на хипервайзор базирани виртуaлни машини. Това е от изключителна полза при силно компактните среди: например, изграждането на собствен клауд или работна платформа;

  • Олекотена работа - Контейнерите работят на индивидуални машини, всяка от които споделя едно и също ядро на операционната система, така че да могат да стартират мигновено и да използват много по-ефективно RAM-та. Изображенията са изградени от слоеве, така че да могат да споделят общи файлове, което прави използването на диска и свалянето на файлове много по-ефективно;
  • Отворен код - Docker контейнерите са базирани на отворени стандарти, позволявайки им да работят на всички водещи Linux дистрибуции и Microsoft операционни системи, както и да имат поддръжка към всяка инфраструктура.
  • Сигурност - Контейнерите изолират приложенията едно от друго и прилежащата инфраструктура, като същевременно осигуряват и допълнителен слой на защита.

Помощ при изграждането на по-добър софтуер?

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

docker-friends

Ускоряване работата на разработчиците

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

Да разрешим на разработчиците да са креативни

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

Елиминиране несъвместимостта на средата

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

Лесно споделяне и съвместна работа с приложенията

worktogether

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

Използвайки Docker Hub, вие и екипът ви лесно ще можете да съхранявате, разпространявате и управлявате вашите Docker изображения. Системата автоматично споделя с всички от екипа всяка промяна, ъпдейт и история на изображенията.

Е, тъй като вeче нямате добро оправдание, е време да се захващате с изграждането на най-яките и изумителни приложения! ;)

truck

Етикети: #docker-kontejneri #virtualni-mashini #virtualizatsionni-tehnologii #kontejnerizatsiya #docker #virtualizatsiya #prilozheniya #internet-prilozheniya #kontejner #open-source-platforma