Docker: вопросы на собеседовании
Вопросы и ответы по Docker: подготовка, примеры и типичные ошибки.
Проверьте себя по Docker: 5 вопросов, ~10 минут
Вопросов: 62. Частые идут первыми, сложные возвращаются на повторение.
- Почему RUN apt-get update без apt-get install в той же строке — это плохо?Middle· спрашивают почти всегда
- Что такое depends_on и почему он не означает «дождаться готовности сервиса»? Как сделать правильное ожидание?Middle· спрашивают почти всегда· полный разбор — Jobs/Boost
- Зачем контейнер должен писать логи в stdout/stderr, а не в файл?Middle· спрашивают почти всегда
- Чем Docker-контейнер отличается от виртуальной машины? Не «контейнер легче», а технически — что использует, что не использует.Junior· спрашивают почти всегда· полный разбор — Jobs/Boost
- Контейнер запускается и сразу выходит. Какие шаги по диагностике?Junior· спрашивают почти всегда· полный разбор — Jobs/Boost
- Контейнер потребляет 8 ГБ памяти и его убивает OOM. Где смотришь и как лимитируешь?Middle· спрашивают почти всегда· полный разбор — Jobs/Boost
- Контейнер в Restarting бесконечно. Алгоритм действий?Middle· спрашивают почти всегда
- Сценарий: два контейнера запущены, но один не может достучаться до другого по имени. Что проверяешь?Middle· спрашивают почти всегда· полный разбор — Jobs/Boost
- Чем default bridge отличается от user-defined bridge? Почему DNS-резолвинг по имени контейнера работает только во втором случае?Middle· спрашивают почти всегда· полный разбор — Jobs/Boost
- Как работает кеш слоёв при docker build? Почему добавление одной строки в package.json ломает кеш для npm install?Middle· спрашивают почти всегда· полный разбор — Jobs/Boost
- Где не стоит хранить секреты при сборке образа, и почему ARG SECRET=... или ENV PASSWORD=... — это утечка?Middle· спрашивают почти всегда· полный разбор — Jobs/Boost
- Когда контейнеризация решает реальную инженерную проблему, а когда Docker только добавляет лишний слой сложности?Middle· спрашивают почти всегда
- На сервере кончилось место. Какие команды Docker помогут (и какая опасна)?Middle· спрашивают почти всегда
- Чем EXPOSE отличается от -p при docker run? EXPOSE вообще что-то делает?Junior· спрашивают почти всегда· полный разбор — Jobs/Boost
- Чем CMD отличается от ENTRYPOINT? Что произойдёт, если задать оба?Junior· спрашивают почти всегда· полный разбор — Jobs/Boost
- Что такое Docker image, container, registry — и какие отношения между ними?Junior· спрашивают почти всегда
- Что такое layer в образе? Почему RUN apt-get update && apt-get install -y curl лучше, чем две отдельные строки RUN?Junior· спрашивают почти всегда· полный разбор — Jobs/Boost
- Что такое multi-stage build? Покажи пример, где это даёт реальный выигрыш.Middle· спрашивают почти всегда· полный разбор — Jobs/Boost
- Что такое --privileged и почему его никогда не используют в проде «просто так»?Senior· спрашивают почти всегда
- Что произойдёт с данными внутри контейнера после docker rm? Где это «внутри» физически живёт на хосте?Junior· спрашивают почти всегда
- Что произойдёт, если внутри контейнера запустить sleep 1000, а потом сделать docker stop? Что такое graceful shutdown в контейнере?Middle· спрашивают почти всегда· полный разбор — Jobs/Boost
- Как сравнить Docker с виртуальными машинами, Podman, containerd и Kubernetes без упрощения до «контейнеры легче»?Junior· спрашивают почти всегда· полный разбор — Jobs/Boost
- Что такое namespaces и cgroups, и при чём они тут? (На senior без этого вопроса не уходят.)Senior· спрашивают почти всегда
- Чем named volume отличается от bind mount и от tmpfs? Когда что использовать?Junior· спрашивают почти всегда
- Что такое PID 1 внутри контейнера и почему он важен? Что такое zombie reaping problem? Зачем tini / --init?Senior· спрашивают почти всегда· полный разбор — Jobs/Boost
- Как ты организуешь tagging образов в проде? Почему latest в проде — плохо?Senior· спрашивают почти всегда· полный разбор — Jobs/Boost
- Какие правила production-grade Dockerfile ты бы выписал на доску?Senior· спрашивают почти всегда· полный разбор — Jobs/Boost
- Почему запускать контейнер от root — плохо? Как задать non-root user в Dockerfile?Middle· спрашивают почти всегда
- Чем BuildKit отличается от старого билдера? Что даёт --mount=type=cache?Middle
- Что такое BuildKit secrets (--mount=type=secret) и зачем они нужны?Middle· полный разбор — Jobs/Boost
- Чем containerd отличается от Docker Engine? Почему Kubernetes выкинул dockershim?Senior· полный разбор — Jobs/Boost
- Как ты сканируешь образы на уязвимости? (Trivy, Grype, Snyk, Docker Scout — что использовал.)Middle· полный разбор — Jobs/Boost
- Как контейнер видит «свой» IP и как с ним общаются снаружи? Что такое port publishing на уровне iptables?Middle· полный разбор — Jobs/Boost
- docker build стал занимать 20 минут вместо 2. Что проверяешь?Middle· полный разбор — Jobs/Boost
- Из чего состоит Docker — клиент, демон, runtime (containerd, runc)? Что произойдёт, если убить демона при работающих контейнерах?Senior· полный разбор — Jobs/Boost
- Зачем нужен docker-compose, если есть docker run? В каком случае compose в проде — нормальная история, а в каком — нет?Middle
- Как понять, что проблема связана с образом, runtime, сетью, volume, лимитами ресурсов или приложением внутри контейнера?Senior· полный разбор — Jobs/Boost
- Представьте, контейнер работает локально, но падает или не отвечает на сервере. Как вы будете разбираться?Senior
- Чем COPY отличается от ADD? Когда что использовать?Junior
- В каком порядке размещать инструкции в Dockerfile, чтобы кеш работал максимально эффективно?Middle· полный разбор — Jobs/Boost
- Что такое HEALTHCHECK и почему он не равнозначен probe в k8s?Middle· полный разбор — Jobs/Boost
- Зачем нужен .dockerignore и какие проблемы он реально решает?Junior
- Какие ошибки в Dockerfile чаще всего приводят к большим, небезопасным или невоспроизводимым образам?Middle
- Какие network drivers есть в Docker (bridge, host, none, overlay, macvlan)? Когда какой используется?Middle· полный разбор — Jobs/Boost
- Как ты делаешь reproducible builds? Что такое pin'ы для базового образа?Senior· полный разбор — Jobs/Boost
- Что такое restart policy (no, on-failure, always, unless-stopped)? Когда что выбирать?Middle· полный разбор — Jobs/Boost
- Какие решения в Docker влияют на production: base image, layers, user, secrets, volumes, network и lifecycle контейнера?Senior· полный разбор — Jobs/Boost
- Какие production-риски есть у Docker-образов и контейнеров: root, secrets, supply chain, logging, shutdown, resource limits?Senior· полный разбор — Jobs/Boost
- Чем отличается docker run --rm, docker start, docker exec, docker attach? Когда какой нужен?Junior· полный разбор — Jobs/Boost
- У тебя на машине разработчика всё работает, на сервере — нет. С чего начнёшь разбираться?Middle· полный разбор — Jobs/Boost
- Зачем нужен image signing (Cosign, Notary)? Что такое supply chain security в контексте контейнеров?Senior
- Чем capabilities отличаются от full root? Какие capabilities обычно дропают?Senior
- Сценарий: на проде нужно подменить конфиг внутри контейнера без пересборки образа. Как это сделать правильно?Middle· полный разбор — Jobs/Boost
- У тебя образ 1.8 ГБ. Какие шаги предпримешь, чтобы уменьшить?Middle
- Чем FROM scratch отличается от FROM alpine и от FROM distroless? Когда что выбирать?Senior
- Как ты собираешь multi-arch образ (amd64 + arm64)? Что такое buildx?Middle· полный разбор — Jobs/Boost
- Расскажите о случае, когда Docker помог или помешал вам в разработке, CI/CD или production.Middle· полный разбор — Jobs/Boost
- Чем --network host опасен? В каких случаях он реально нужен?Middle· полный разбор — Jobs/Boost
- Чем read-only rootfs полезен и какие проблемы создаёт?Middle· полный разбор — Jobs/Boost
- Можно ли шарить один volume между несколькими контейнерами? Какие подводные камни?Middle· полный разбор — Jobs/Boost