Перейти к основному контенту
Tech Path Finder
Docker для разработчика: минимум который спрашивают на собесе

Docker для разработчика: минимум который спрашивают на собесе

Константин Потапов
1 апреля 2026 г.
11 мин
DevOps

Почему Docker стал обязательным

Раньше Docker был плюсом в резюме. Сейчас это базовое требование почти в каждой вакансии для разработчика. Причина простая: без Docker "работает у меня" — это отговорка, которую никто не принимает.

Junior, который умеет поднять приложение через docker-compose up, имеет реальное преимущество.


Что такое Docker (объяснение для собеса)

На собеседовании часто спрашивают: "Объясни Docker своими словами".

Ответ: Docker — инструмент контейнеризации. Контейнер — это изолированное окружение с приложением и всеми его зависимостями. Контейнер запускается одинаково на любой машине, где есть Docker.

Чем отличается от виртуальной машины?

  • ВМ виртуализирует железо и запускает полноценную ОС
  • Контейнер использует ядро хостовой ОС, только изолирует процессы и файловую систему
  • Контейнер запускается за секунды, ВМ — минуты
  • Контейнер потребляет десятки мегабайт, ВМ — гигабайты

Ключевые понятия

Image (образ) — неизменяемый шаблон для создания контейнеров. Аналог класса в ООП.

Container (контейнер) — запущенный экземпляр образа. Аналог объекта.

Dockerfile — инструкции для сборки образа.

Registry — хранилище образов. Публичный: Docker Hub. Корпоративный: AWS ECR, GitLab Registry.

Volume — постоянное хранилище данных вне контейнера.

Network — виртуальная сеть для общения контейнеров.


Dockerfile: что нужно знать

Минимальный Dockerfile для FastAPI-приложения:

Почему порядок важен — вопрос на собеседовании

Docker кеширует каждый слой. Если сначала скопировать код, а потом ставить зависимости — при любом изменении кода кеш зависимостей инвалидируется. Это замедляет сборку в разы.

Правило: сначала всё что меняется редко, потом — код.

FROM — выбор базового образа

На собеседовании могут спросить: "Почему вы выбрали slim, а не alpine?"

Ответ: Alpine использует musl вместо glibc. Некоторые Python-пакеты (особенно с C-расширениями) не работают или требуют дополнительной сборки на Alpine. Slim — компромисс: небольшой размер без проблем совместимости.


Базовые команды Docker


docker-compose: главный инструмент разработчика

В реальной разработке приложение состоит из нескольких сервисов. docker-compose запускает их все одной командой.

Команды docker-compose


Частые вопросы на собесе

"Как передать переменные окружения в контейнер?"

Важно: никогда не храни секреты в Dockerfile — они попадут в образ и историю слоёв.

"Что такое volumes и зачем они нужны?"

Контейнер — эфемерен. Когда он удаляется, все данные внутри исчезают. Volume — это монтирование директории с хостовой машины (или Docker-managed storage) внутрь контейнера.

"Как контейнеры общаются между собой?"

В docker-compose все сервисы в одной сети по умолчанию. Контейнеры обращаются друг к другу по имени сервиса.

"Что такое multi-stage build?"

Multi-stage build уменьшает финальный образ — в production не нужны компиляторы и build-tools.


Типичные ошибки Junior

1. Запуск от root

2. Секреты в образе

3. Запуск docker run вместо docker-compose

В реальных проектах всегда docker-compose — он описывает всю инфраструктуру как код.

4. Игнорирование .dockerignore

# .dockerignore .git .env __pycache__ *.pyc .venv node_modules *.log

Без .dockerignore в образ попадают тонны ненужного, включая секреты из .env.


Чек-лист для собеседования

  • Могу объяснить разницу между образом и контейнером
  • Написал Dockerfile для Python-приложения
  • Понимаю порядок инструкций и кеширование слоёв
  • Умею пользоваться docker-compose (up, down, logs, exec)
  • Знаю зачем нужны volumes
  • Понимаю как сервисы общаются по имени
  • Знаю про .dockerignore и почему он важен

Практика

Лучший способ запомнить Docker — поднять своё приложение в контейнере. Если у тебя ещё нет проекта, возьми любой учебный FastAPI-туториал и добавь Dockerfile + docker-compose.yml. Это займёт час и запомнится лучше любой статьи.

На Tech Path Finder есть курс с практическими заданиями по DevOps-тематике — Docker, CI/CD, мониторинг.