Что произойдет, если в Dockerfile будет только инструкция FROM?

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

Ответ

Такой Dockerfile является минимально валидным. При его сборке будет создан новый образ, который содержательно и по слоям будет идентичен указанному базовому образу, но с другим тегом (идентификатором).

Что происходит:

  1. Docker загружает базовый образ (если его нет локально) из реестра (например, Docker Hub).
  2. Создается новый образ-слой, который является ссылкой на базовый. Фактически, это тот же самый набор файлов.
  3. Новому образу присваивается тег, указанный в команде docker build -t.

Пример Dockerfile:

FROM alpine:3.18

После сборки docker build -t my-alpine . образ my-alpine:latest будет точной копией alpine:3.18.

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

  • Тегирование: Создание собственного именованного тега для базового образа, чтобы зафиксировать конкретную версию в CI/CD пайплайне.
  • Базовый образ для многоэтапной сборки: Использование в первой стадии FROM ... AS builder.
  • Отправная точка: Создание минимального шаблона для дальнейших модификаций. В моей практике мы часто начинали с FROM ubuntu:jammy или FROM golang:1.21-alpine, а затем добавляли инструкции COPY, RUN и CMD.