Първи стъпки с Docker, първа част

Първият въпрос е: какво е Docker?

Ако сте разработчик, може да сте се сблъсквали с проблема софтуерът да работи на вашата машина, но да не работи в тестовата среда. Docker, на много основно ниво, решава този проблем.

Кога Docker влиза в игра?

Docker играе своята роля в етапа на внедряване на жизнения цикъл на разработка на софтуер (SDLC). Docker прави процеса на внедряване на приложения много лесен и разрешава много свързани проблеми.

Какво прави Docker?

Софтуерът не е просто част от кода. Състои се от предни компоненти, бек-енд сървъри, бази данни и пликове, библиотеки и зависимости. Трябва да сме сигурни, че всички компоненти работят добре и че софтуерът работи на всички платформи: мобилни телефони, таблети, компютри и всичките им различни операционни системи. Ако начертаем диаграма на всички компоненти и платформи, ще видим, че всеки компонент се свързва с всяка платформа - изглежда като невронна мрежа!

Една проста метафора, която може да се използва, за да разберете това: Представете си, че се местите и трябва да вземете всичките си неща със себе си в друга страна. Нещата, които премествате, са с различни размери и форми и имат различни изисквания (чупливи, „Това свършва“ и т.н.). Ще трябва да помислите за транспорт, опаковане, експертен труд, доставка. Но ако имате контейнер, всички тези други проблеми изчезват и всичко, което трябва да направите, е да опаковате правилно нещата си в контейнера.

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

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

Как да създадете Docker контейнери

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

Дефиниции

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

Изображение на Docker: Шаблон само за четене, използван за създаване на контейнери, създадени от потребители на Docker; съхранявани в Docker hub или вашия локален регистър.

Docker Container: Изолирана платформа за приложения, която съдържа всичко необходимо за стартиране на приложение, изградено от едно или повече изображения.

Какво е Docker Compose?

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

Да приемем, че разработвате приложение с пълен стек, използвайки MongoDB, Express, Angular и Node.js. Трябва да използвате три Docker файла, съдържащи три контейнера. Един контейнер за MongoDB, който е базата данни, и един контейнер за сървъра, който е комбинация от Express и Node.js, и друг за Angular (предния клиент).

В случай, че не знаете как работи приложение с пълен стек, първо имате клиентската страна, в която работи потребителят. Потребителят изпраща заявка до приложението, което след това изпраща заявката до сървъра. Сървърът, т.е. back-end, изпълнява всички функции. След това сървърът взема данните от базата данни (в този случай MongoDB) и ги изпраща към предния край на потребителя. Всички Docker файлове в контейнерите се контролират от Docker Compose файла, който е написан на YAML. В YAML файла трябва да посочите мястото, където се намират контейнерите, както и номерата на портовете, които Composer трябва да използва, за да взаимодейства с другите контейнери.

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

Docker използва архитектура клиент-сървър. Вижте изображението по-долу за пояснение.