junior
Какие основные инструкции используются в Dockerfile?
Инструкции Dockerfile — это команды, определяющие содержимое и поведение Docker-образа.
| Инструкция | Описание |
|---|---|
FROM |
Задаёт базовый образ. Каждый Dockerfile должен начинаться с FROM. Пример: FROM eclipse-temurin:17-jre-alpine |
RUN |
Выполняет команду в процессе сборки образа и создаёт новый слой. Пример: RUN apt-get update && apt-get install -y curl |
COPY |
Копирует файлы и директории из контекста сборки в файловую систему образа. Пример: COPY target/app.jar /app/app.jar |
ADD |
Аналог COPY, но дополнительно поддерживает URL и автоматическую распаковку архивов (tar, gzip и т.д.) |
CMD |
Определяет команду по умолчанию, которая выполнится при запуске контейнера. Может быть переопределена аргументами docker run |
ENTRYPOINT |
Определяет исполняемый файл, который запустится при старте контейнера. В отличие от CMD, не так легко переопределяется |
EXPOSE |
Документирует, какой порт слушает приложение внутри контейнера. Не публикует порт автоматически — для этого нужен -p при docker run |
ENV |
Устанавливает переменную окружения, которая будет доступна и при сборке, и в работающем контейнере. Пример: ENV JAVA_OPTS="-Xmx512m" |
ARG |
Определяет переменную, доступную только во время сборки. Пример: ARG JAR_FILE=target/*.jar |
WORKDIR |
Устанавливает рабочую директорию для последующих инструкций RUN, CMD, ENTRYPOINT, COPY, ADD. Пример: WORKDIR /app |
VOLUME |
Создаёт точку монтирования для тома. Данные в этой директории будут сохраняться вне контейнера. Пример: VOLUME /data |
USER |
Задаёт пользователя, от имени которого выполняются последующие инструкции и запускается контейнер. Пример: USER appuser |
LABEL |
Добавляет метаданные к образу. Пример: LABEL maintainer="dev@example.com" |
HEALTHCHECK |
Определяет команду для проверки состояния контейнера |
На собеседовании: не нужно перечислять все инструкции наизусть. Важно знать ключевые: FROM, RUN, COPY, CMD, ENTRYPOINT, EXPOSE, ENV, WORKDIR. Часто задают уточняющие вопросы про разницу CMD/ENTRYPOINT и COPY/ADD — это отдельные вопросы собеседования.