Gymterview
middle

Опишите архитектуру Docker

Docker использует клиент-серверную архитектуру, состоящую из нескольких компонентов.

Docker Daemon (dockerd)

Серверный процесс, который управляет Docker-объектами: образами, контейнерами, сетями и томами. Daemon слушает запросы через Docker API (REST API по Unix-сокету или TCP). Он отвечает за сборку образов, запуск контейнеров, управление сетями и хранением.

Docker Client (docker)

Основной интерфейс для взаимодействия пользователя с Docker. Когда пользователь вводит команду вроде docker run, клиент отправляет соответствующий запрос к Docker Daemon через Docker API. Клиент может работать с удалённым daemon.

Docker Engine

Общее название для комбинации Docker Daemon, REST API и CLI-клиента. Docker Engine бывает двух редакций:

  • Docker Engine Community (CE) — бесплатная версия.
  • Docker Engine Enterprise (EE) — коммерческая версия с дополнительными функциями.

Containerd

Среда выполнения контейнеров (container runtime), которую Docker использует внутри для управления жизненным циклом контейнеров. Containerd отвечает за загрузку образов, запуск и остановку контейнеров.

Схема взаимодействия

Пример
Docker Client (CLI)
    │
    │  REST API
    ▼
Docker Daemon (dockerd)
    │
    ▼
Containerd → runc (создание контейнеров)
    │
    ▼
Контейнеры, Образы, Тома, Сети

На собеседовании: важно показать, что Docker — это не монолит, а клиент-серверная архитектура. CLI-клиент общается с daemon через REST API, а daemon делегирует запуск контейнеров containerd/runc. Знание этой цепочки показывает понимание того, как работает Docker на уровне процессов.