Главная страница » Docker Introduction

Docker Introduction

by admin

Виртуализация и контейнеризация — это два разных способа «делить» одно физическое железо между несколькими изолированными средами.

Что такое виртуализация

Виртуализация — это технология, при которой над физическим сервером запускается специальный слой (гипервизор), создающий несколько виртуальных машин.
Каждая виртуальная машина получает «своё» виртуальное железо (CPU, память, диск, сеть) и устанавливает полную гостевую ОС, как будто это отдельный сервер.

Ключевые моменты:

  • На одном физическом сервере может крутиться много ВМ, каждая со своей ОС и приложениями.
  • ВМ изолированы друг от друга, но каждая тяжёлая: полный стек ОС, собственные драйверы, службы и т.д.

Что такое контейнеризация

Контейнеризация — это запуск изолированных приложений, которые разделяют одно и то же ядро операционной системы хоста.
Контейнер упаковывает приложение вместе с его библиотеками и зависимостями, но не включает в себя полную отдельную ОС.

Ключевые моменты:

  • Все контейнеры используют одно ядро хост‑ОС, но изолированы пространствами имён и ограничениями по ресурсам.
  • Контейнеры лёгкие, быстро стартуют и хорошо подходят для микросервисов, CI/CD и облаков.

Если совсем коротко: виртуализация делает несколько «полноценных серверов» на одном железе, а контейнеризация делает много изолированных приложений на одной ОС.

Контейнеры обычно лучше виртуалок именно для приложений: они легче, быстрее, проще переносить и масштабировать. Но при этом ВМ всё ещё нужны там, где важна жёсткая изоляция и полноценная отдельная ОС.

​Плюсы контейнеризации

Лёгкость и скорость

  • Контейнер делит ядро хост‑ОС, поэтому не тянет с собой полную гостевую систему, в отличие от ВМ, где для каждой машины нужен свой целый образ ОС.
  • Из‑за этого контейнер весит обычно мегабайты и стартует за секунды, а ВМ — гигабайты и минуты на бут гостевой ОС.

Эффективное использование ресурсов

  • Общий kernel и базовые библиотеки дают меньший overhead по CPU, RAM и диску, поэтому на одном физическом сервере помещается гораздо больше контейнеров, чем ВМ.
  • Это позволяет экономить железо и деньги: тот же хост выдержит в 2–3 раза больше контейнерных ворклоадов по сравнению с ВМ при сопоставимой нагрузке.

Портативность и «одинаково везде»

  • Контейнер упаковывает приложение + все зависимости, поэтому один и тот же образ одинаково работает на ноутбуке разработчика, в тесте, в on‑prem и в облаке.
  • Это сильно снижает классическую проблему «у меня работает/у вас не работает», потому что окружение стандартизовано образом.

Гибкость и микросервисы

  • Лёгкость контейнеров позволяет разбивать монолит на множество мелких сервисов (микросервисы), каждый в своём контейнере, с отдельным циклом релизов.
  • Такой сервис можно обновить или откатить, не трогая остальные — нет жёсткой связки, как когда несколько компонентов живут внутри одной ВМ.

Масштабирование и DevOps

  • Контейнеры отлично ложатся на оркестраторы вроде Kubernetes: они легко создаются, уничтожаются и пересоздаются при автоскейлинге и деплоях.
  • Быстрый старт и малая «тушка» контейнера ускоряют CI/CD: катить новые версии и откатывать релизы можно значительно быстрее, чем с полными ВМ.

Где ВМ всё ещё нужны

Часто используется гибрид: поверх нескольких ВМ разворачивают кластер контейнеров, совмещая безопасность/совместимость ВМ и гибкость контейнеров.

Виртуальные машины дают более жёсткую изоляцию (своя ОС, свои драйверы), что важно для старых монолитов, «тяжёлых» Windows‑приложений или когда требуется разный тип ОС на одном хосте.

ХарактеристикаКонтейнерыВиртуальные машины
Нагрузка на ресурсыЛёгкая, общий kernel, меньше RAM/CPUТяжёлая, своя ОС на каждую ВМ
Скорость стартаСекундыМинуты из‑за бут‑процесса ОС
ПортативностьВысокая, одинаковый образ вездеНиже, завязка на гипервизор/образ
Обновления/релизыПростой rolling/blue‑green, микросервисыТяжелее, крупные образы, монолиты
ИзоляцияПроцессная, через namespaces/cgroupsПолная ОС‑изоляция

You may also like

Leave a Comment