### Инструкции. Dockerfile
1. ADD Копирует файлы из контекста создания или из удаленных URL-ссылок в создаваемый образ. Если архивный файл добавляется из локального пути, то он будет автоматически распакован. Так как диапазон функциональности инструкции ADDдостаточно велик, в общем случае лучше воспользоваться более простой командой COPY для копирования файлов и каталогов в локальном контексте создания или инструкциями RUN с запуском curl или wget для загрузки удаленных ресурсов (с сохранением возможности обработки и удаления результатов загрузки в той же самой инструкции).
2. CMD Запускает заданную инструкцию во время инициализации контейнера. Если была определена инструкция ENTRYPOINT, то заданная здесь инструкция будет интерпретироваться как аргумент для ENTRY POINT (в этом случае необходимо использовать формат exec). Инструкция CMD замещается любыми аргументами, указанными в командеdockerrunпосле имени образа. В действительности выполняется только самая последняя инструкция CMD, а все предыдущие инструкции CMD будут отменены (в том числе и содержащиеся в основных образах).
3. COPY Используется для копирования файлов из контекста создания в образ. Имеет два формата:COPYисточникцельиCOPY["источник","цель"]– оба копируют файл или каталог из «источник» в контексте создания в «цель» внутри контейнера. Формат JSON-массива обязателен, если путь содержит пробелы. Можно использовать шаблонные символы для определения нескольких файлов или каталогов. Следует обратить особое внимание на невозможность указания путей «источника», расположенных вне пределов контекста создания (например, нельзя указать для копирования файл ../another_dir/myfile).
4. ENTRYPOINT Определяет выполняемый файл (программу) (и аргументы по умолчанию), запускаемый при инициализации контейнера. В эту выполняемую программу передаются как аргументы любые инструкции CMD или аргументы команды docker run, записанные после имени образа. Инструкции ENTRYPOINT часто используются для организации скриптов запуска, которые инициализируют переменные и сервисы перед обработкой всех передаваемых в образ аргументов.
5. ENV Определяет переменные среды внутри образа. На эти переменные можно ссылаться в последующих инструкциях.
````
ENV MY_VERSION 1.3
RUN apt-get install -y mypackage=$MY_VERSION
```
6. EXPOSE Сообщает механизму Docker о том, что в данном контейнере будет существовать процесс, прослушивающий заданный порт или несколько портов. Механизм Docker использует эту информацию при установлении соединения между контейнерами (см. раздел «Соединение между контейнерами» ниже) или при открытии портов для общего доступа при помощи аргумента-P в команде docker run. Но сама по себе инструкция EXPOSE не оказывает никакого воздействия на сетевую среду.
7. FROM Определяет основной образ для файла Dockerfile. Все последующие инструкции выполняют операции создания поверх заданного образа. Основной образ определяется в форме IMAGE:TAG (например, debian:wheezy). При отсутствии тега по умолчанию полагается latest, но я настоятельно рекомендую всегда явно указывать тег конкретной версии, чтобы избежать неприятных неожиданностей. Эта инструкция обязательно должна быть самой первой в Dockerfile.
8. MAINTAINER Определяет метаданные об авторе «Author» для создаваемого образа в заданной строке. Извлечь эти метаданные можно с помощью командыdockerinspect -f{{.Author}}IMAGE. Обычно используется для записи имени автора образа и его контактных данных.
9. ONBUILD Определяет инструкцию, которая должна выполняться позже, когда данный образ будет использоваться как основной уровень для другого образа. Это может оказаться полезным при обработке данных, добавляемых в образ-потомок (например, это может быть инструкция копирования дополнительного кода из заданного каталога и запуска скрипта сборки, обрабатывающего скопированные данные).
10. RUN Запускает заданную инструкцию внутри контейнера и сохраняет результат.
11. USER Задает пользователя (по имени или по идентификатору UID) для использования во всех последующих инструкциях RUN, CMD, ENTRYPOINT. Отметим, что идентификаторы UID одинаковы на хосте и в контейнере, но имена пользователей могут присваиваться различным идентификаторам UID, что может приводить к затруднениям при установке прав доступа.
12. VOLUME Объявляет заданный файл или каталог как том. Если такой файл или каталог уже существует в образе, то он копируется в том при запуске контейнера. Если задано несколько аргументов, то они интерпретируются как определение нескольких томов. Из соображений обеспечения безопасности и сохранения переносимости нельзя определить каталог хоста как том внутри файла Dockerfile.
13. WORKDIR Определяет рабочий каталог для всех последующих инструкций RUN, CMD, ENTRYPOINT, ADD, COPY. Инструкцию можно использовать несколько раз. Допускается указание относительных путей, при этом итоговый путь определяется относи тельно ранее указанного рабочего каталога WORKDIR.