Що таке Docker, та як він працює?

Рано чи пізно, кожен девопс інженер стикаєтсья із терміном – контейнеризація. Проте, більшість уявляють саме засіб Docker, коли десь згадується за контейнери.

Але що таке Докер, і чи дійсно він надає, так звані, контейнери? У цьому і спробуємо розбіратися у цій статті.

Принцип віртуалізації

Перш за все, для того, щоб краще зрозуміти, як парцює Докер, потрібно дізнатися про протележний термін – віртуалізація.

Віртуалізація – це метод запуску різних, повноцінних ОС, пам’яті, баз даних та інших середовищ, за допомогою ресурсів системи, де є потреба у створенні цих штучних об’єктів та середовищ. Це означає, що у процесі віртуалізації, наприклад, комп’ютера на ОС Віндовс, спеціальнільні алгоритми створюють усі віртуальні компоненти потрібні для роботи цієї системи, тобто : ядро системи, пам’ять, сама ОС, BIOS або UEFI та інші.

Увесь цей процес відбувається за допомогою використання ресурсів персонального комп’ютера, на якому і відбувається віртуалізація. Тобто середовище, яке віртуалізується, створюється повністю, як окремий, незажний компонент, але з використанням ресурсів пристрою, де ця віртуалізація відбувається.

Контейнерезація

Принцип контейнерезації схожий на віртуалізацію, проте має одну важливу відмінність – відстутність низькорівневої віртуалізації. Це означає, що на відміну від віртуальних середовищ, таких як віртуальні машини, контейнер не потребує створення окремого ядра , та все, що над ним надбудовується, наприклад, операційна система.

Це і є найбільшою перевагою контейнерів у порівнянням із віртуальними машинами. Так як контейнери використовують ядро, та систему на якій вони запускаються, вони є набагато швидшими та меншими у порівнянні з ВМ.

Проте, у контейнеризації є обмеження, цей принцим був реалізований і розвинений на UNIX системах, на основі їх ядра, що означає, що Windows та MacOS не могли запускати їх. На даних момент, за допомогою певних засобів (WSL) – це є можливим, проте усе одно, контейнери лише емулюють файлові системи, програми, та засоби, які працюють лише на основі UNIX ядра.

Docker та Linux контейнери

Знаючи, що таке контейнеризація, можна і дати пояснення програмному забезпеченню Docker.

Docker – це не засіб, який безпосередньо створює контенери, а лише обгортка над цими процесами, яка неймовірну полегшує роботу з їх створення та роботи з ними.

Самі контейнери безпосередньо створюються на основі можливостей ядра Linux, яке дозволяє створювати окремі, ізольовані місця у пам’яті, які можуть емітувати свої файлові системи, процеси, та взаємодію між ними. Ці ізольовані місця називають просторами імен. Проте цього не достатньо, щоб мати динамічне середовище, для цього ще потрібен засіб, який керує скільки пам’яті, ресурсів процесора і тд. відповідний простір імен має змогу отримати і використовувати. Контрольні групи – це і є засіб, який дозмоляє увести ці обмеження.

Тобто, якщо Докер сам не створює контенери, то як же він тоді працює?

Усе просто. На найнижчому рівні, засіб runc застосовує простори імен, та котнрольні групи для запуску контейнера. Далі containerdAPI засіб, який приймає запити на зміну, запуск, та інші команди для роботи із контейнерами, від самого Docker.

Висновок

Отже, після того як ми розібралися, що таке контейнеризаці та віртуалізація, ми побачили, як взагалі працюють контейнери і для чого вони потрібні.

Окрім цього, ми побачили, що Docker – не є засобом, який безпосердньо створює контейнери та керує ними, а лише обгорткою навколи інших процесів та ресурсів, які відповідають за контейнери, тим самим полегчуючи роботу з ними, та спрощуюючи рівень знань потрібний для роботи з ними.

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *