Sobes.tech
Back to questions
Middle
7

Best practices написания Dockerfile: как сделать образы маленькими и безопасными?

Companies where asked
МТСМТС

Answer from AI

sobes.tech AI

Чтобы сделать Docker-образы маленькими и безопасными, придерживайтесь следующих практик:

  • Используйте минимальные базовые образы, например, alpine или scratch, чтобы уменьшить размер.
  • Удаляйте временные файлы и кеши после установки пакетов (например, apt-get clean и удаление /var/lib/apt/lists/*).
  • Минимизируйте количество слоёв, объединяя команды в один RUN.
  • Используйте многоступенчатую сборку (multi-stage builds), чтобы в итоговый образ попадали только необходимые артефакты.
  • Запускайте контейнеры с непривилегированными пользователями, а не от root.
  • Ограничивайте права доступа к файлам и переменным окружения.
  • Обновляйте базовые образы и зависимости, чтобы закрыть известные уязвимости.

Пример многоступенчатого Dockerfile:

FROM golang:1.20-alpine AS builder
WORKDIR /app
COPY . .
RUN go build -o myapp

FROM alpine:latest
RUN adduser -D appuser
USER appuser
COPY --from=builder /app/myapp /usr/local/bin/myapp
CMD ["myapp"]

Такой подход уменьшает размер итогового образа и повышает безопасность за счёт минимального окружения и непривилегированного пользователя.