Одне з найчастіших запитань про Docker – це чим він відрізняється від VM (віртуальної машини).
Що стосується хмарної інфраструктури, то для багатьох своїх переваг віртуальна машина стала стандартом. Однак що робити, якщо у вас була альтернатива віртуальній машині, яка була більш легкою, економічною та масштабованою. Саме це і є Докер.
Docker – це контейнерна технологія, яка дозволяє розробляти розподілені програми. У цій публікації в блозі я поясню різницю між віртуальними машинами та контейнерами Docker.
Contents
Що таке віртуальна машина?
Віртуальна машина – це система, яка діє точно як комп’ютер.
Простіше кажучи, це дозволяє запускати те, що, як видається, є на багатьох окремих комп’ютерах на апаратному забезпеченні, тобто на одному комп’ютері. Кожна віртуальна машина вимагає своєї базової операційної системи, а потім апаратне забезпечення віртуалізується.
Що таке Докер?
Docker – це інструмент, який використовує контейнери, щоб значно спростити створення, розгортання та запуск програми. Він пов’язує додаток та його залежності всередині контейнера.
Навчання Докер легко!
Докер проти В.М.
Зараз я розповім вам про суттєві відмінності між докерними контейнерами та віртуальними машинами. Що ж, суттєві відмінності полягають у підтримці їх операційної системи, захищеності, портативності та продуктивності.
Тож давайте обговоримо кожен із цих термінів один за одним.
Підтримка операційної системи
Підтримка операційної системи для віртуальної машини та контейнера Docker сильно відрізняється. З наведеного зображення видно, що кожна віртуальна машина має свою гостьову операційну систему над операційною системою хоста, що робить віртуальними машини важкими. З іншого боку, контейнери Docker мають загальну операційну систему, і тому вони легкі.
Ділення хост-операційної системи між контейнерами робить їх дуже легкими та допомагає завантажуватися лише за кілька секунд. Отже, накладні витрати на управління контейнерною системою дуже низькі порівняно з віртуальними машинами.
Контейнери докера підходять для ситуацій, коли потрібно запускати кілька додатків через одне ядро операційної системи. Але якщо у вас є додатки або сервери, які потрібно запускати на різних смаках операційної системи, тоді потрібні віртуальні машини.
Безпека
Віртуальна машина не ділиться операційною системою, і в ядрі хоста існує сильна ізоляція. Отже, вони більш безпечні порівняно з контейнерами. У контейнері є багато ризиків для безпеки та вразливості, оскільки контейнери мають спільне ядро хоста.
Крім того, оскільки ресурси докера є спільними, а не розділеними іменами, зловмисник може використовувати всі контейнери в кластері, якщо він / вона отримає доступ навіть до одного контейнера. У віртуальній машині ви не маєте прямого доступу до ресурсів, і гіпервізор є для того, щоб обмежити використання ресурсів у віртуальній машині.
Переносність
Контейнери Docker легко переносяться, оскільки не мають окремих операційних систем. Контейнер можна перенести в іншу ОС, і він може запуститися негайно. З іншого боку, віртуальні машини мають окрему ОС, тому перенести віртуальну машину складно порівняно з контейнерами, а також потрібно багато часу, щоб перенести віртуальну машину через її розмір.
Для цілей розробки, де програми повинні бути розроблені та протестовані на різних платформах, контейнери Docker є ідеальним вибором.
Продуктивність
Порівняння віртуальних машин та контейнерів Docker не було б справедливим, оскільки вони обидва використовуються для різних цілей. Але легка архітектура докера, його менш трудомістка функція робить його кращим вибором, ніж віртуальна машина. Як результат, контейнери можуть запускатись дуже швидко порівняно з віртуальними машинами, а використання ресурсів змінюється залежно від завантаження або трафіку в ньому.
На відміну від віртуальних машин, немає необхідності постійно розподіляти ресурси на контейнери. Масштабування та дублювання контейнерів також є легким завданням порівняно з віртуальними машинами, оскільки немає необхідності встановлювати в них операційну систему..
Висновок
Ось таблиця, яка робить висновки про відмінності віртуальних машин та контейнерів Docker.
Віртуальна машина | Контейнер Docker |
Ізоляція технологічного рівня на апаратному рівні | Ізоляція процесу на рівні ОС |
Кожен ВМ має окрему ОС | Кожен контейнер може спільно використовувати ОС |
Чоботи за лічені хвилини | Чоботи за секунди |
Відеомагнітоси мають кілька ГБ | Контейнери легкі (КБ / МБ) |
Готові ВМ важко знайти | Попередньо вбудовані докер-контейнери легко доступні |
Віртуальний комп’ютер може легко перейти на новий хост | Контейнери руйнуються та створюються заново, а не переміщуються |
Створення VM займає порівняно довший час | Контейнери можна створити за лічені секунди |
Більше використання ресурсів | Менше використання ресурсів |
МЕТИ:
Докер