Ответ
Технически, единственная обязательная инструкция в Dockerfile — это FROM. Она определяет базовый образ, от которого наследуется сборка.
Минимальный допустимый Dockerfile (1 инструкция):
FROM alpine:latest
Однако контейнер, собранный из такого образа, не имеет команды по умолчанию и завершит работу сразу после запуска (docker run), так как нечего выполнять.
Минимальный рабочий Dockerfile (2 инструкции) должен включать команду для запуска. Обычно это CMD или ENTRYPOINT.
FROM alpine:latest
CMD ["echo", "Hello from a minimal Docker image!"]
Почему FROM обязательна? Docker строит образы послойно. Инструкция FROM задаёт начальный слой (базовый образ), который содержит файловую систему (например, корень Alpine или Ubuntu). Все последующие инструкции (RUN, COPY, CMD) добавляют изменения поверх этого базового слоя.
Практический пример и сборка:
- Создайте файл
Dockerfile.minс содержимым выше (2 инструкции). - Соберите образ:
docker build -t minimal:latest -f Dockerfile.min . - Запустите контейнер:
docker run --rm minimal:latest # Вывод: Hello from a minimal Docker image!
Важно для DevOps:
- Даже в сложных Dockerfile первая инструкция — всегда
FROM. - Выбор базового образа (
alpineдля минимального размера,distrolessдля безопасности,ubuntuдля полноты) — ключевое архитектурное решение. - Инструкции
CMDиENTRYPOINTопределяют, как контейнер будет запускаться в оркестраторах вроде Kubernetes.