(перевод официальной документации Docker)
FROM <image> [AS <name>]
или
FROM <image>[:<tag>] [AS <name>]
или
FROM <image>[@<digest>] [AS <name>]
Dockerfile должен начинаться с инструкции FROM. Она начинает новый этап сборки и устанавливает базовый образ для последующих инструкций.
ARGединственная инструкция которая может предшествоватьFROMвDockerfile.FROMможет появляться несколько раз в одном Dockerfile для создания нескольких образов или использования одного этапа сборки в качестве зависимости для другого.- При желании можно дать имя новому этапу сборки, добавив
AS nameв инструкциюFROM. - Значения
tagилиdigestявляются необязательными. Если вы не указали ни один из них, по умолчанию сборщик принимает тегlatest.
Взаимодействие ARG и FROM
Инструкция FROM поддерживает переменные, объявленные любыми инструкциями ARG, которые встречаются до первого FROM
ARG CODE_VERSION=latest
FROM base:${CODE_VERSION}
CMD /code/run-app
FROM extras:${CODE_VERSION}
CMD /code/run-extras
ARG объявленный до FROM, находится вне процесса сборки, поэтому его нельзя использовать ни в одной инструкции после FROM. Чтобы использовать значение по умолчанию для ARG, объявленного перед первым FROM, используйте инструкцию ARG без значения внутри шага сборки:
ARG VERSION=latest
FROM busybox:$VERSION
ARG VERSION
RUN echo $VERSION > image_version
RUN
RUN принимает две формы:
RUN <command>(форма shell, команда вызывается в shell, в linux по умолчанию/bin/sh -c)RUN ["executable", "param1", "param2"](форма exec)
Инструкция RUN будет выполнять любые команды в новом слое поверх текущего образа и фиксировать результаты.
пример: при использовании образа Ubuntu можно обновить систему прописав команду RUN apt-get update && apt-get upgrade.
Слоистость RUN и генерация коммитов соответствуют основным концепциям Docker, где коммиты дешевы, и контейнеры могут быть созданы из любой точки в истории образа.