Ответ
Docker виртуализирует процессы и их окружение, а не аппаратное обеспечение. Он создает изолированные контейнеры, которые разделяют ядро хостовой операционной системы, но имеют собственную файловую систему, сетевой стек и пространства имён.
Ключевые механизмы изоляции:
- Namespaces: Изолируют процессы, сеть, пользователей и т.д. (например, PID namespace даёт контейнеру собственный набор PID).
- Control Groups (cgroups): Ограничивают и отслеживают использование ресурсов (CPU, память, I/O).
- Union File Systems (OverlayFS): Обеспечивают наслоение образов для эффективного хранения и создания контейнеров.
Пример: При запуске docker run -it ubuntu bash создается контейнер с изолированным процессом bash, работающим в собственном файловом пространстве (образ Ubuntu) и сетевом пространстве имён.
Это делает контейнеры гораздо более легковесными и быстрыми по сравнению с полными виртуальными машинами, которые виртуализируют всё железо.