1
4.5

Оцінити

Статті читати 4 хв. 4.5 12 голосів 438

Що таке Docker: простими словами про контейнеризацію

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

Що таке Docker

Docker — це програмне забезпечення, яке дає можливість на певній ділянці пам'яті ізольовано встановити необхідну ОС (операційну систему), версію Java, налаштувати змінні оточення, встановити різні залежності і дати доступ тільки за певних умов. При цьому дану програму абсолютно не буде хвилювати, що відбувається навколо.

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

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

Розберемо проблематику і розглянемо більше прикладів

Сервер — комп'ютер, з якого ви зараз читаєте цю статтю, або такий, як у вас вдома або на роботі, тільки з більшою потужністю. На ньому встановлено Windows, наприклад, а для роботи вашої програми необхідний Linux. А ще цікавіше, коли навіть від версії вашої системи або додаткових програм може залежати коректність роботи. Що тоді робити? Перевстановлювати? Купувати інший комп'ютер?

Контейнеризація — від слова контейнер. Давайте ще наведемо приклад з життя, і стане зрозуміліше необхідність застосування.

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

Так і у випадку з програмами, сервер — це наш лайнер, а Docker — це можливість отримати такі контейнери, в які ми зможемо завантажити вантаж (програми). І при такому використанні будемо впевнені, що одна програма не поламає іншу, в одному контейнері буде Windows, в іншому Linux, в третьому — MacOS.

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

Чому Docker, а не ВМ?

Віртуальна машина (ВМ) — емулятор апаратного забезпечення. Простими словами на своєму комп'ютері за допомогою програми ви можете встановити собі ще якусь ОС (операційну систему), яку зможете запустити паралельно.

Є певні відмінності між ВМ і контейнеризацією, про які в даній статті я писати не буду. Але для простоти розуміння сказав би, що технологія контейнеризації дозволяє запустити дуже компактні віртуальні машини (окремі процеси). Такі контейнери займають мало місця (образ Ubuntu займає 68Mb), запускаються дуже швидко і налаштовуються дуже гнучко.

Одна з переваг технології Docker — це незалежність платформи. Тобто ви можете описати запуск програми, працюючи на Windows, а потім без проблем запустити на MacOS. Це дає можливість дуже швидко переносити і налаштовувати програму на різних серверах.

Загальна схема роботи Docker

Для початку необхідно встановити Docker на ваш комп'ютер, щоб можна було створювати, налаштовувати і запускати контейнери. Інструкцій зі встановлення на просторах інтернету повно, в тому числі і на офіційному сайті docker.com.

Схема створення контейнера виглядає наступним чином:

  1. Створюєте 'Dockerfile' — файл, в якому необхідно описати, як буде створюватися образ. Простими словами — це опис того, як буде виглядати ваша кімната;
  2. Image — це образ, на підставі якого в подальшому буде запущений контейнер. Це дизайнерський проект вашої кімнати, чітка схема того, що і де буде стояти;
  3. Container — це запущений образ, в якому працює Ваша програма з описаними залежностями відповідно до інструкції. Тобто, це вже готова кімната, в якій ви можете жити.

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

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

Основні терміни

Dockerfile — файл-інструкція по збірці образу. Дані не мають розширення (на зразок .txt).

Image — образ, який створюється на підставі Dockerfile. Також образи можна завантажувати і запускати з віддаленого сховища. Немає необхідності образ Ubuntu збирати самостійно. На підставі одного образу можна створити кілька контейнерів.

Container — контейнер, який запускається на підставі image (образа). Створений контейнер можна запускати і зупиняти. Паралельно можна запустити кілька контейнерів, незалежних і залежних один від одного.

Docker Engine — це движок Docker, власне, це сам докер.

Docker Hub — це якраз те віддалене сховище, де ви можете завантажити необхідний образ. У цьому сховищі можливо зберегти свої образи, щоб в подальшому була можливість отримати доступ до них будь-де і поділитися з ким завгодно.

Docker-compose — це інструмент, який дозволяє запустити кілька контейнерів, пов'язаних між собою. Він може мати свої налаштування і може використовувати описані раніше налаштування з Dockerfile. Це вам стане в нагоді при більш глибокому вивченні даної теми.

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

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

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

Схожі матеріали

Подпишитесь на рассылку
Компьютерной школы Hillel

Ви отримаєте:

  • Інформацію про корисні галузеві заходи
  • Цікаві статті IT-сфери
  • Новини Комп'ютерної школи Hillel