Docker Architecture: Защо е важно?



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

Много от нас вярват, че Docker е неразделна част от . Така че зад този невероятен инструмент трябва да има невероятна архитектура. В този блог ще разгледам всичко, което трябва да знаете за архитектурата на Docker. Това са точките, които ще обсъдя тук:

  1. Традиционна виртуализация срещу Docker
  2. Docker’s Workflow
  3. Архитектура на Docker

Традиционна виртуализация срещу Docker

Какво е виртуална машина (виртуална машина)?

VM е виртуален сървър, който емулира хардуерен сървър. Виртуалната машина разчита на физическия хардуер на системата, за да емулира точно същата среда, в която инсталирате вашите приложения. В зависимост от случая на използване можете да използвате системна виртуална машина (която изпълнява цяла операционна система като процес, позволяващ ви да замените реална машина с виртуална машина) или да обработвате виртуални машини, които ви позволяват да изпълнявате компютърни приложения сами във виртуалната заобикаляща среда.





По-рано създавахме виртуални машини и всяка виртуална машина имаше операционна система, която отнемаше много място и я правеше тежка.

Какво е Docker?

Docker е проект с отворен код, който предлага решение за разработка на софтуер, известно като контейнери. За да разберете Docker, трябва да знаете какво представляват контейнерите. Според Докер , контейнерът е лек, самостоятелен, изпълним пакет от софтуер, който включва всичко необходимо за неговото стартиране.



Контейнерите са независими от платформата и следователно Docker може да работи както на Windows, така и на Linux базирани платформи. Всъщност Docker може да се изпълнява и във виртуална машина, ако възникне необходимост от това. Основната цел на Docker е, че ви позволява да стартирате приложения за микросервиси в разпределена архитектура.

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

какво е вектор в java

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



vm срещу docker - докер архитектура - edureka

Docker’s Workflow

Първо, нека разгледаме Docker Engine и неговите компоненти, за да имаме основна идея за това как работи системата. Docker Engine ви позволява да разработвате, сглобявате, изпращате и стартирате приложения, като използвате следните компоненти:

  1. Docker Daemon : Постоянен фонов процес, който управлява Docker изображения, контейнери, мрежи и обеми за съхранение. Демонът на Docker постоянно изслушва заявките за API на Docker и ги обработва.

  2. API за отдих на Docker Engine : API се използва от приложенията за взаимодействие с демона на Docker. Той може да бъде достъпен от HTTP клиент.

  3. Докер CLI : Клиент на интерфейс за команден ред за взаимодействие с демона на Docker. Това значително опростява начина, по който управлявате екземпляри на контейнери и е една от ключовите причини, поради които разработчиците обичат да използват Docker.

Отначало клиентът на Docker разговаря с демона на Docker, който извършва тежко повдигане на сградата, работа, както и разпространение на нашите контейнери Docker. По принцип и клиентът на Docker, и демонът могат да работят в една и съща система. Също така можем да свържем клиент на Docker къмотдалечен демон на Docker. В допълнение, чрез използване на REST API, клиентът и демонът на Docker комуникират през UNIX сокети или мрежов интерфейс.

Архитектура на Docker

Архитектурата на Docker използва модел клиент-сървър и се състои от Docker’s Client, Docker Host, Network and Storage компоненти и Docker Registry / Hub. Нека разгледаме всеки от тях с някои подробности.

Клиент на Docker’s

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

Докер домакин

Хостът на Docker предоставя пълна среда за изпълнение и стартиране на приложения. Състои се от демона на Docker, изображения, контейнери, мрежи и хранилище. Както бе споменато по-горе, демонът е отговорен за всички действия, свързани с контейнера, и получава команди чрез CLI илиREST API. Той може също така да комуникира с други демони, за да управлява своите услуги.

Докер обекти

1. Изображения

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

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

2. Контейнери

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

Можете също така да създадете ново изображение въз основа на текущото състояние на контейнер. Тъй като контейнерите са много по-малки от виртуалните машини, те могат да бъдат завъртени за секунди и да доведат до много по-добра плътност на сървъра

3. Мрежи

Docker мрежата е проход, през който всички изолирани контейнери комуникират. В докера има главно пет мрежови драйвера:

    1. Мост : Това е мрежовият драйвер по подразбиране за контейнер. Използвате тази мрежа, когато приложението ви се изпълнява на самостоятелни контейнери, т.е. множество контейнери, комуникиращи с един и същ докер хост.

    2. Водещ : Този драйвер премахва мрежовата изолация между докер контейнери и докер хост. Можете да го използвате, когато не се нуждаете от мрежова изолация между хост и контейнер.

    3. Наслагване : Тази мрежа позволява на роевите услуги да комуникират помежду си. Използвате го, когато искате контейнерите да се изпълняват на различни хостове на Docker или когато искате да формирате роеви услуги от множество приложения.

    4. Нито един : Този драйвер деактивира всички мрежи.

    5. маквлан : Този драйвер присвоява mac адрес на контейнери, за да изглеждат като физически устройства. Той насочва трафика между контейнери през техните mac адреси. Използвате тази мрежа, когато искате контейнерите да изглеждат като физическо устройство, например, докато мигрирате настройка на VM.

4. Съхранение

Можете да съхранявате данни в записваемия слой на контейнер, но той изисква драйвер за съхранение. Тъй като не е постоянен, той загива, когато контейнерът не работи. Освен това не е лесно да прехвърлите тези данни. По отношение на постоянното съхранение, Docker предлага четири опции:

    1. Обеми на данни : Те осигуряват възможността за създаване на постоянно съхранение, с възможност за преименуване на томове, списък на томове, както и списък на контейнера, който е свързан с тома. Обемите с данни се поставят във файловата система на хоста, извън механизмите за копиране при запис и са доста ефективни.

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

    3. Директория за монтиране : Друга възможност е да монтирате локална директория на хост в контейнер. В по-горе споменатите случаи томовете трябва да са в папката на томовете на Docker, докато когато става въпрос за монтиране на директории, всяка директория на хост машината може да се използва като източник за тома.

    4. Приставки за съхранение : Плъгините за съхранение предоставят възможност за свързване с външни платформи за съхранение. Тези плъгини съпоставят хранилището от хоста към външен източник като масив за съхранение или уред. Можете да видите списък с добавки за съхранение на страницата на Docker’s Plugin.

Docker’s Registry

Регистрите на Docker са услуги, които предоставят местоположения, от които можете да съхранявате и изтегляте изображения. С други думи, регистърът на Docker съдържа хранилища на Docker, които хостват едно или повече изображения на Docker. Публичните регистри включват два компонента, а именно Docker Hub и Docker Cloud. Можете също да използвате Частни регистри. Най-често срещаните команди при работа с регистри включват: docker push, docker pull, docker run

След като разбрахте архитектурата на Docker, вижте това от Edureka, доверена компания за онлайн обучение с мрежа от над 250 000 доволни учащи, разпространени по целия свят. Курсът за обучение за сертифициране на Edureka DevOps помага на обучаващите се да разберат какво е DevOps и да придобият опит в различни процеси и инструменти на DevOps като Puppet, Jenkins, Nagios, Ansible, Chef, Saltstack и GIT за автоматизиране на множество стъпки в SDLC.

Имате въпрос към нас? Моля, споменете го в раздела за коментари на тази „Архитектура на Docker“ и ние ще се свържем с вас