Встречается на 80% собеседований по DevOps

Без какой инструкции не может существовать докер файл

Dockerfile не может существовать без инструкции FROM, которая определяет базовый (родительский) образ, от которого строится собственный образ. Без неё Docker не знает, с какого состояния начинать сборку, поэтому сборка образа невозможна.

Как это работает

FROM — это первая и обязательная инструкция в любом Dockerfile. Она задаёт отправную точку для сборки: Docker берёт указанный образ (например, python:3.8) и на его основе добавляет последующие слои, создавая новый образ. Инструкция выполняет несколько ключевых функций:

  • Определяет начальный слой, на котором размещаются все последующие слои.
  • Задаёт окружение для выполнения команд сборки: операционную систему, предустановленные библиотеки и утилиты.
  • Позволяет переиспользовать готовые образы, избегая настройки окружения с нуля.

Без FROM Dockerfile считается невалидным, и команда docker build завершится ошибкой.

Пример

dockerfile
# Использование официального образа Python 3.8 как базового
FROM python:3.8

# Далее идут остальные инструкции: COPY, RUN, CMD и т.д.

В этом примере FROM python:3.8 указывает Docker взять официальный образ Python 3.8 и использовать его как основу. Все последующие инструкции будут выполняться в контексте этого образа.

Подводные камни

  • FROM должна быть первой инструкцией в Dockerfile, но перед ней допустимы только комментарии и директива ARG (объявление переменных для сборки). Если поставить FROM после других инструкций, Docker выдаст ошибку.
  • Базовый образ должен существовать в реестре (например, Docker Hub) или быть доступным локально. Иначе сборка упадёт с ошибкой pull access denied.
  • Выбор базового образа влияет на размер, безопасность и скорость сборки. Например, alpine — лёгкий образ, а ubuntu — более полный, но тяжёлый.
  • Можно использовать несколько FROM в одном Dockerfile для многоступенчатой сборки (multi-stage build), но каждая стадия обязана начинаться с FROM.

Когда использовать

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

Коротко

  • FROM — обязательная инструкция, определяющая базовый образ.
  • Без FROM Dockerfile невалиден, сборка невозможна.
  • FROM должна быть первой инструкцией (допустимы комментарии и ARG).
  • Выбор базового образа влияет на размер, безопасность и скорость сборки.
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы