Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Docker: Docker, multi-stage build, image optimization, build cache

Что такое многоэтапная сборка Docker-образов?

Вопрос проверяет понимание многоэтапной сборки Docker для оптимизации размера образов и безопасности.

Короткий ответ

Многоэтапная сборка Docker позволяет использовать несколько инструкций FROM в одном Dockerfile. Каждый этап может базироваться на разных образах. Финальный образ копирует только необходимые артефакты из предыдущих этапов, что уменьшает его размер и повышает безопасность.

Длинный ответ

Что такое многоэтапная сборка Docker?

Многоэтапная сборка (multi-stage build) — это возможность Docker использовать несколько инструкций FROM в одном Dockerfile. Каждый этап может начинаться с разных базовых образов и выполнять свои инструкции. Финальный образ собирается только из необходимых артефактов, скопированных из предыдущих этапов.

Зачем это нужно?

Обычно при сборке приложения требуются инструменты компиляции, пакеты разработки и зависимости, которые не нужны в рантайме. Использование одного образа приводит к его раздуванию. Многоэтапная сборка решает эту проблему, позволяя разделить этапы сборки и выполнения.

Пример

Рассмотрим сборку Go-приложения. На этапе сборки используется образ с Go, компилируется бинарник. На финальном этапе используется минимальный образ, например alpine, куда копируется только скомпилированный бинарник.

# Этап сборки
FROM golang:1.20 AS builder
WORKDIR /app
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN CGO_ENABLED=0 GOOS=linux go build -o myapp .

# Финальный этап
FROM alpine:latest
RUN apk --no-cache add ca-certificates
WORKDIR /root/
COPY --from=builder /app/myapp .
CMD ["./myapp"]

Преимущества

  • Уменьшение размера финального образа.
  • Повышение безопасности — меньше уязвимых компонентов.
  • Упрощение Dockerfile — не нужно использовать скрипты для очистки.
  • Ускорение сборки за счёт кэширования этапов.

Вывод

Многоэтапная сборка Docker — это стандартный подход для создания лёгких и безопасных образов. Её стоит применять в любом проекте, где требуется минимизировать размер контейнера и изолировать среду сборки от выполнения.

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    4

  • Сложность:

    5

Навыки

  • Docker

    Docker

  • Kubernetes

    Kubernetes

Ключевые слова

#Docker

#multi-stage build

#image optimization

#build cache

Подпишись на Python Developer в телеграм

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.