Back to blog

Какво е Docker и защо го използваме?

Aug 19th 2019 / Programming


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

Не много отдавна компанията Docker, Inc е създадена от екип от професионалисти, стремящи се да създадат проект с отворен код, който да автоматизира пускането в експлоатация на код в софтуерни контейнери. Официалният продукт е обявен пред широката публика през 2013 г. и има както безплатни, така и премиум нива.


Какво всъщност представлява Docker?


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

Технологията на Docker контейнерите стартира през 2013 чрез продукта с отворен код Docker Engine. Той използва съществуващите изчислителни концепции около контейнери и, по-специално, в света на Linux примитиви, известни като cgroups и namespaces. Технологията на Docker е уникална, тъй като се фокусира върху изискванията на разработчиците и системните оператори да разделя зависимостите на приложенията от инфраструктурата.

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

А какво точно е контейнер?


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

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


Защо предпочитаме да използваме Docker?


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

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

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