Docker отдавна е необходимост за всеки екип, решил да подхване по-сериозно начинание онлайн. Този по-съвършен вариант на виртуалните машини направи възможно проектите да работят независимо от външната среда и се превърна в любимо решение за програмистите.
Но как работи? На какво се дължи успехът му и можеше ли да го очакваме? Какво идва след него? И защо е важно да го знаем като собственици на сайт? (А ако още не сте сред тях – започнете безплатно тук!)
Не блъфирай. Контейнеризирай!
След инцидента с огромния транспортен кораб, който запуши Суецкия канал, онлайн се появиха доста миймове, които правят паралел с Docker, който обаче е доста по-сигурен.
И наистина – не е случайно, че през последните години той е първи приятел на програмистите, девопсите и останалите специалисти, които се занимават със създаването на софтуер.
Защото ги спаси от един от кошмарите, които сигурно още се появяват в сънищата на хората с по-дългогодишен опит. А именно: синдромът „ама при мен работи“.
Някога, за да покаже какво е създал на някой друг компютър, програмистът трябваше да ползва виртуални машини, които обаче бяха доста тежки, а и работеха по различен начин в зависимост от средата, операционната система… а понякога дори без обяснение. Просто от настроението на виртуалната машина.
Кораб на хоризонта
И точно тогава с гръм и трясък на хоризонта се появи Docker.
„Олекотена“ виртуална машина, която работи без грешка. И за няколко години се превърна в стандарт в професията – надали днес има сериозен софтуерен уеб проект по света, който да не го ползва. А постепенно дойде и оркестрирането – комбинирането на многобройни docker контейнери, но за него ще ви разкажем следващ път.
В основата на всичко са контейнерите. Между другото, определено е много сполучлива метафората в терминологията на тази област. Защото Docker наистина доставя от бряг до бряг работещата стока – софтуера, който носи. Като за целта го „опакова“ в сигурни контейнери, които пазят надеждно товара си и го изолират от външния свят, докато стигне до местоназначението.
Да се откъснеш от проблемите
Казано малко по-технологично – контейнерът е специален тип процес, който работят напълно изолирано от останалите процеси. Не може да имат достъп до други процеси, освен такива, изрично свързани с него, също както и другите процеси нямат достъп до него.
Преди контейнерите на практика не беше възможно процесите да се изолират от външния свят и това водеше до проблемите, за които споменахме.
Контейнерите дават така търсения „пясъчник“ (по-често наричан с английския термин sandbox) – напълно изолирана среда.
Разбира се, ако са конфигурирани както трябва. И точно това дава Docker, при това с лекота и броени редове код.
В този смисъл, няма разлика дали два контейнера работят на един и същи физически компютър, или са на двата края на планетата – това, което правят, ще функционира по същия начин.
Изолация преди изолацията
А това има доста предимства. В случай, че са на един и същи компютър, процесите няма да си влияят един на друг. Те не могат да достъпват данните на „съседа“, освен ако изрично не им е казано да го правят.
Освен това две отделни приложения могат да работят в контейнери, споделяйки си хардуера, но съхранявайки данните си независими.
Оттук нататък – споделеният хардуер във времената на облака означава… по-малко хардуер. Оптимизиране на реалните ресурси. Един бизнес няма един сървър и колкото от неговите ресурси са заети – толкова. Напротив – всеки процесор и всеки диск е рационално натоварен, така че да работи пълноценно и ефективно. Като резултат идват бързото скалиране на ресурсите, доволните потребители и успешните онлайн бизнеси.
Сглобяваме контейнера
Идеята за контейнерите като принцип и решение е на десетилетия, но именно Docker идва, за да я приложи най-сетне масово в практиката.
През март 2013 г. не особено известната фирма dotCloud се преименува на Docker Inc. и представя проекта, заради който е създадена и чието име приема. На основата на Linux заработват първите реални контейнери, които успяват да изпълнят този толкова перспективен принцип.
Docker е лесен за употреба софтуер с отворен код. Достатъчно е да имате компютър с операционна система, която позволява създаването на виртуални машини чрез софтуера Virtualbox. Или пък поддържа контейнерите без допълнителни усилия, а именно – Linux.
Оттам нататък проектът, който искате да подкарате, може да расте и расте. На един и същи компютър да подкарате стотици контейнери, които да задвижват отделните приложения в себе си, разпределяйки рационално ресурсите на машината. Както вече споменахме, после идва и нуждата от оркестрирането на всички тези отделни единици, така че да работят в синхрон, запазвайки изолираността си един от друг.
CLIентът има значение
Docker е удобен за използван през командния интерфейс. Отваряте терминала, изтегляте от мрежата нужния първообраз (или “image“), от който създавате отделния контейнер. Давате му сигнал да започне работа с необходимите допълнителни настройки и скоро софтуерът в него се задвижва. Подкарвате следващ и следващ…
Всичко това попадна на мястото и защото все по-популярно организационно решение в създаването на софтуер стана микросървизната архитектура. При нея много ресурси работят успоредно и си разпределят заявките в зависимост от работата, която вършат. И успяват да го правят, защото не си пречат.
Като скала
В този смисъл, Docker е добро решение, защото позволява и много по-бързата скалируемост. В интернет света нещата са светкавично динамични и не знаеш кога малкият сайт изведнъж може да се превърне в хит, да се наложи бързо да се добавят нови функционалности и решения, а Docker наистина е важен в това отношение.
Рядко някоя технология просто идва и си попада на мястото така, както в конкретния случай. Версия 1.0 на Docker е пусната през юни 2014 г., а само месец по-късно стотици проекти научават за новата програма, която успява да пуска работещи контейнери и преминават към нея. Пазарът на услугите, свързани с контейнеризиране, расте от 749 милиона долара през 2016 г. до вероятно 3,4 милиарда през 2021 г.
Разбира се, сам по себе си Docker е технология с отворен код, която се базира на големите възможности на Linux. Контейнерите използват споделени операционни системи. Ще рече, че вместо за се виртуализира целият хардуер, те работят на върха на една-единствена инстанция на Linux. Така няма нужда от огромната част от ресурсите, нужни на старите виртуални машини за сметка на малка, семпла капсулка, съдържаща вашата апликация.
Кораб без почивен ден
Именно Docker направи възможна и превърналата се в стандарт методология за разработване на уеб приложенията „непрекъсната интеграция/непрекъсната разработка“ (Continuous Integration / Continuous Deployment или просто CI/CD). При този подход програмистите могат бързо и лесно да обновяват приложението, по което работят. На всеки цикъл на разработване (обикновено продължаващ между седмица и месец) се добавят нови възможности, елиминират се бъгове. А приложението през това време продължава да бъде достъпно и сигурно „сервирано“ на потребителите си благодарение на Docker. Независимо дали става дума за стартъп, или за най-големите днес компании в онлайн света.
Защото Docker контейнерите са стандартизирани достатъчно, че да не крият рискове нещо неочаквано да се „счупи“ на ниво контейнер.
Плава, но не потъва
Разбира се, той по никакъв начин не е панацея, няма технология, която да може да отговори едновременно на всички нужди. Не е необходимо да се занимавате с него, ако сте сигурни, че вашият проект може да се побере в обикновен WordPress-ки сайт. Което значи, че изведнъж от списъка отпада 1/3 от днешния интернет. Той е решение, когато нуждите на софтуера изискват по-комплексен подход, а също – само ако в екипа ви има специалисти, които добре познават работата с него.
И все пак, Docker е лесен за употреба, гъвкав, семпъл. Пример за една успешна технология, която не се крепи на модата, а на здравата логика и затова бързо се превърна в стандарт, който, по всичко личи, ще продължи да властва още дълго в света на софтуерното разработване. Също толкова надеждна, както хостинга, който вече 17 години предлагаме и не спираме да развиваме. Опитайте безплатно тук!