Архитектура Docker – просто о главном: как это работает на самом деле

Docker — один из самых популярных инструментов в современной разработке. Но многие разработчики учат команды наизусть, так и не разобравшись, как всё это работает изнутри. Давайте исправим это раз и навсегда.
Как работает Docker: общая схема
Вся архитектура Docker строится на трёх ключевых элементах: Клиент → Docker Daemon → Хост. Клиент отправляет команды, демон их выполняет, а хост — это машина, на которой всё это запускается.
Основные компоненты
Клиент (Client)
Это то, с чем вы работаете напрямую — командная строка (CLI) или Docker Desktop. Клиент принимает ваши команды и передаёт их Docker Daemon через REST API. Клиент и демон могут находиться на одной машине или на разных — это не принципиально.
Docker Daemon (dockerd)
Это «мозг» всей системы. Фоновый процесс, который слушает запросы от клиента и выполняет реальную работу: собирает образы, запускает и останавливает контейнеры, управляет сетями и томами. Без демона Docker не работает.
Хост (Host)
Машина, на которой работает Docker Daemon. Это может быть ваш ноутбук, локальный сервер или облачная виртуальная машина. На хосте и живут все ваши контейнеры.
Образы и контейнеры: в чём разница?
Образ (Image) — это неизменяемый шаблон, «чертёж» вашего приложения. Он содержит код, зависимости, переменные окружения и всё необходимое для запуска. Образы создаются с помощью Dockerfile и могут храниться в реестре.
Контейнер (Container) — это запущенный экземпляр образа. Каждый контейнер работает в изолированной среде: у него своя файловая система, своя сеть, свои процессы. При этом из одного образа можно запустить сколько угодно контейнеров одновременно.
Простая аналогия: образ — это рецепт блюда, контейнер — это уже готовое блюдо на тарелке.
Хранение данных: тома (Volumes)
По умолчанию все данные внутри контейнера исчезают при его остановке. Чтобы данные сохранялись между перезапусками, используют тома (Volumes). Том — это отдельное хранилище, которое монтируется в контейнер. Данные в нём живут независимо от жизненного цикла контейнера.
Сети: как контейнеры общаются друг с другом
Docker создаёт виртуальные сети, через которые контейнеры могут взаимодействовать между собой. По умолчанию используется bridge-сеть — контейнеры в ней видят друг друга по имени. Существуют и другие типы сетей: host, overlay, macvlan — каждый подходит для своих сценариев.
Реестр образов (Registry)
Registry — это удалённое хранилище образов. Самый известный публичный реестр — Docker Hub. С его помощью вы можете скачивать готовые образы (docker pull) или загружать свои (docker push). В корпоративной среде часто используют приватные реестры, например Amazon ECR или GitLab Container Registry.
Dockerfile: инструкция по сборке
Dockerfile — это текстовый файл с набором инструкций, по которым Docker собирает образ. Каждая строка в Dockerfile создаёт новый слой образа. Правильно написанный Dockerfile делает сборку быстрой и образ — лёгким.
Итог: шпаргалка по архитектуре Docker
Ниже — наглядная шпаргалка, которая собирает всё вышесказанное в одну картинку. Сохраните
её и возвращайтесь каждый раз, когда что-то забудете.

Понять архитектуру Docker один раз — значит перестать гуглить каждую команду и начать работать с инструментом осознанно. Docker становится предсказуемым, как только вы видите полную картину.
