Docker

8 вопросов

Docker - контейнеризация приложений. Образы и контейнеры, Dockerfile (multi-stage build, CMD vs ENTRYPOINT), volumes, networking, Docker Compose. Стандартный инструмент для разработки и деплоя.

1 Чем Docker-образ (image) отличается от контейнера (container)? 🟢 Лёгкий
Ответ: B) Образ - шаблон (read-only), контейнер - запущенный экземпляр

Docker image - неизменяемый шаблон из слоёв. Контейнер - запущенный экземпляр образа с записываемым слоем. Из одного образа можно создать множество контейнеров. Аналогия: образ - класс, контейнер - объект.

Подробнее →
2 Чем COPY отличается от ADD в Dockerfile? 🟢 Лёгкий
Ответ: B) ADD умеет распаковывать архивы и загружать по URL

COPY - просто копирует файлы. ADD автоматически распаковывает tar-архивы и может загружать по URL. Best practice: используйте COPY для предсказуемости. ADD нужен только когда требуется распаковка архива.

Подробнее →
3 Для чего нужны Docker volumes? 🟢 Лёгкий
Ответ: B) Для сохранения данных вне жизненного цикла контейнера

При удалении контейнера все данные записываемого слоя теряются. Volumes хранят данные на хосте, независимо от контейнера. Используются для БД, логов, конфигов. Типы: named volumes (Docker управляет), bind mounts (конкретный путь).

Подробнее →
4 Как контейнеры в одной Docker-сети обращаются друг к другу? 🟢 Лёгкий
Ответ: B) По имени контейнера (DNS)

Docker создаёт встроенный DNS для контейнеров в одной сети. Контейнер postgres доступен по hostname "postgres". В Docker Compose имя сервиса автоматически становится hostname.

Подробнее →
5 Для чего нужен Docker Compose? 🟢 Лёгкий
Ответ: B) Для описания и запуска многоконтейнерных приложений

Docker Compose описывает все сервисы (web, db, cache, monitoring) в docker-compose.yml. Одна команда docker compose up запускает всё с зависимостями, сетями и volumes. Для production-оркестрации используют Kubernetes.

Подробнее →
6 Зачем нужен multi-stage build в Dockerfile? 🟡 Средний
Ответ: B) Для уменьшения размера финального образа

Multi-stage build использует несколько FROM. Первый этап (build) содержит компилятор и зависимости. Второй (runtime) копирует только бинарник в минимальный образ (alpine, scratch). Go-приложение: сборка ~1 ГБ, финальный ~15 МБ.

Подробнее →
7 Чем ENTRYPOINT отличается от CMD в Dockerfile? 🟡 Средний
Ответ: B) ENTRYPOINT задаёт команду, CMD - аргументы по умолчанию

ENTRYPOINT задаёт основную команду. CMD - аргументы по умолчанию. docker run myapp arg1 заменит CMD, но не ENTRYPOINT. Пример: ENTRYPOINT ["./app"], CMD ["--port", "80"]. docker run myapp --port 3000 перезапишет только CMD.

Подробнее →
8 Как оптимизировать кеширование слоёв при сборке Go-приложения? 🟡 Средний
Ответ: B) Сначала COPY go.mod go.sum и RUN go mod download, затем COPY кода

Docker кеширует слои последовательно. Если слой изменился - все последующие пересобираются. Копируя go.mod/go.sum первыми и запуская go mod download, вы кешируете зависимости. Код меняется чаще зависимостей, поэтому копируется позже.

Подробнее →
🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.