Вопрос проверяет понимание назначения директивы FROM в Dockerfile, которая является основой для создания образов.
Директива FROM в Dockerfile является обязательной и всегда должна быть первой инструкцией. Она определяет базовый образ, на основе которого будет строиться новый образ. Без FROM Dockerfile считается невалидным, так как Docker не может начать сборку без исходного слоя.
Каждый образ Docker состоит из набора слоев. Директива FROM подтягивает готовый образ из реестра (например, Docker Hub) и делает его первым слоем нового образа. Все последующие инструкции (RUN, COPY, CMD) добавляют новые слои поверх базового. Это позволяет эффективно кешировать слои и ускорять сборку.
# Используем официальный образ Node.js версии 18
FROM node:18
# Устанавливаем рабочую директорию
WORKDIR /app
# Копируем файлы проекта
COPY package*.json ./
# Устанавливаем зависимости
RUN npm install
# Копируем исходный код
COPY . .
# Запускаем приложение
CMD ["node", "index.js"]FROM используется в любом Dockerfile, независимо от языка программирования или фреймворка. Это основа контейнеризации, позволяющая переиспользовать официальные образы (например, python:3.11, golang:1.21) или собственные кастомные образы.
Директива FROM — это точка входа в создание Docker-образа. Она задает фундамент, на котором строится всё приложение. Использование правильного базового образа критически важно для безопасности, производительности и размера итогового образа.