Docker проти віртуальної машини (VM) – розуміння відмінностей

Одне з частих запитань про Docker — чим він відрізняється від VM (віртуальної машини).

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

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

Що таке віртуальна машина?

Віртуальна машина — це система, яка діє точно так само, як комп’ютер.

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

Що таке Docker?

Docker — це інструмент, який використовує контейнери, щоб значно полегшити створення, розгортання та роботу програми. Він прив’язує програму та її залежності всередині контейнера.

  Що таке Wondershare Helper Compact?

Навчання Docker легко!

Докер проти ВМ

Зараз я розповім вам про значні відмінності між докер-контейнерами та віртуальними машинами. Істотними відмінностями є підтримка операційної системи, безпека, портативність і продуктивність.

Тож давайте обговоримо кожен із цих термінів окремо.

Підтримка операційної системи

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

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

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

Безпека

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

  Як отримати пряме посилання для завантаження файлу в документі Office 365

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

Портативність

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

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

Продуктивність

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

  Як швидко увімкнути режим низького енергоспоживання на вашому iPhone

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

Висновок

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

Віртуальна машина
Контейнер Docker
Ізоляція процесів на апаратному рівні
Ізоляція процесу рівня ОС
Кожна віртуальна машина має окрему ОС
Кожен контейнер може спільно використовувати ОС
Завантажується за лічені хвилини
Завантажується за секунди
Віртуальні машини мають кілька ГБ
Контейнери мають малу вагу (КБ/МБ)
Готові віртуальні машини важко знайти
Попередньо зібрані докер-контейнери легко доступні
Віртуальні машини можна легко перемістити на новий хост
Контейнери руйнуються та створюються заново, а не переміщуються
Створення віртуальної машини займає відносно більше часу
Контейнери можна створити за лічені секунди
Більше використання ресурсів
Менше використання ресурсів

Вам сподобалось читати статтю? Як щодо того, щоб поділитися зі світом?