Что делает инструкция FROM в Dockerfile?

«Что делает инструкция FROM в Dockerfile?» — вопрос из категории Docker, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Инструкция FROM в Dockerfile определяет базовый образ, на основе которого начинается сборка нового образа. Это обязательная первая инструкция (за исключением необязательных инструкций ARG, которые могут предшествовать FROM). Она задает начальный слой файловой системы и окружение для последующих команд.

Синтаксис и примеры:

# Использование официального образа с конкретным тегом
FROM ubuntu:22.04

# Использование минимального образа Alpine Linux
FROM alpine:3.18

# Использование образа для конкретного языка/фреймворка
FROM python:3.11-slim

# Использование в многоступенчатой сборке (multi-stage build)
FROM golang:1.21 AS builder
WORKDIR /app
COPY . .
RUN go build -o myapp .

# Второй этап: создание финального легковесного образа
FROM alpine:3.18
COPY --from=builder /app/myapp /usr/local/bin/
CMD ["myapp"]

Практические аспекты для DevOps:

  • Выбор базового образа: Определяет размер, безопасность и состав финального образа. Для продакшена предпочтительны минимальные образы (alpine, distroless, scratch).
  • Управление версиями: Всегда указывайте конкретный тег (например, ubuntu:22.04), а не плавающий latest, чтобы обеспечить воспроизводимость сборок.
  • Безопасность: Регулярно обновляйте базовые образы в CI/CD-пайплайнах для применения исправлений уязвимостей.
  • Кэширование слоев: Сборка начинается с этого образа, и его слои кэшируются, что ускоряет последующие сборки.