Основана на следующих ключевых технологиях:
- Cgroups (Control Groups): Механизм ядра Linux, позволяющий ограничивать, изолировать и отслеживать использование ресурсов (CPU, память, дисковый ввод-вывод, сетевой ввод-вывод) группами процессов. Позволяет Docker управлять ресурсами, выделяемыми каждому контейнеру.
- Namespaces (Пространства имен): Еще один механизм ядра Linux, используемый для изоляции ресурсов операционной системы. Docker использует следующие пространства имен:
- Pid (Process ID): Изоляция процессов, каждый контейнер имеет свое независимое пространство PID.
- Net (Networking): Изоляция сетевого стека, каждый контейнер имеет свои сетевые интерфейсы, IP-адреса и маршруты.
- Mnt (Mount): Изоляция точек монтирования, файловая система внутри контейнера не видит файловую систему хоста (кроме явно примонтированных).
- Uts (Unix Time-sharing System): Изоляция имени хоста и доменного имени.
- Ipc (Inter-Process Communication): Изоляция межпроцессного взаимодействия.
- User: Изоляция пользовательских ID (в некоторых конфигурациях).
- Union File Systems (UnionFS): Файловая система, которая позволяет прозрачно накладывать одну файловую систему поверх другой. Docker использует UnionFS (например, OverlayFS, AUFShistorically) для создания слоистых