Docker — это платформа для автоматизации развёртывания, масштабирования и управления контейнеризированными приложениями. Контейнеры позволяют упаковать приложение и все его зависимости в единый исполняемый образ, который можно запускать в любой системе с установленным Docker, обеспечивая совместимость и предсказуемость окружения.
Как docker работает на уровне ОС?
Docker использует ряд технологий ядра Linux для создания контейнеров и их изоляции. Основные технологии:
Namespaces — это механизм ядра, который изолирует ресурсы, такие как процессы, сетевые интерфейсы и файловую систему. Каждый контейнер работает в своём пространстве имен, что создаёт иллюзию работы в отдельной операционной системе.
Control Groups (cgroups) — это механизм, который ограничивает количество ресурсов (CPU, память, дисковое пространство), доступных для контейнера. Cgroups позволяет Docker задавать ограничения по использованию ресурсов для каждого контейнера.
UnionFS (Файловые системы с наложением) — Docker использует файловую систему с наложением (например, OverlayFS), которая позволяет контейнерам делить общий доступ к базовому образу, добавляя свои изменения поверх базового слоя. Это эффективно с точки зрения использования дискового пространства, так как общий образ не копируется для каждого контейнера.
Container Daemon (Docker Daemon) — это фоновый процесс, который управляет всеми объектами Docker, такими как образы, контейнеры, сети и тома. Он принимает команды от клиента Docker, например, для создания или запуска контейнера.