Что такое Docker и для чего он используется? Каково основное устройство Docker-контейнеров?
Уровень: Senior
Ответ
Docker — это платформа контейнеризации, которая позволяет упаковать приложение со всеми его зависимостями (библиотеками, средой) в единый контейнер. Контейнер Docker — изолированная среда, работающая на ядре хоста, но отделённая от остальных процессов (собственная файловая система, сетевые интерфейсы, ограниченные ресурсы). Основная идея: "контейнеры" легче, чем виртуальные машины, потому что не несут в себе отдельное ядро/ОС — они используют возможности ядра хостовой системы (cgroups, namespaces в Linux) для изоляции. Docker-контейнеры создаются на основе образов (image), которые представляют собой слоистую файловую систему (каждый слой — результат изменения, например, установки пакета). Docker широко применяется для стандартизации среды разработки и продакшена: если приложение запущено в Docker, то на любой машине с Docker оно поведёт себя одинаково. Это облегчает деплой (например, через Docker Compose или Kubernetes можно запускать множество контейнеров, описав их зависимости), масштабирование и изоляцию приложений друг от друга. Устройство: Docker-демон управляет образами и контейнерами, создаёт контейнеры с помощью Linux namespace (для изоляции) и cgroups (для ограничения ресурсов). Контейнер видит внутри себя как бы свою мини-ОС (с нужными утилитами, которые включены в образ), но на самом деле использует ядро хоста.