Skip to main content

Dockerfile

DockerFile - набор инструкций по установке и настройке контейнера. Также используется для создания преднастроенных образов. Обычно dockerfile расположен в директории, из которой вызывается команда. 
Имя файла: Dockerfile (без расширения).
Контекст создания - набор локальных файлов/каталогов, к которым можно обращаться через copy/add. 
/ не стоит использовать как контекст, полностью включается в архив
# комментарии
При сборке образа попытки использования кэша идут до первого промаха. Затем кэш не проверяется.
.dockerignore - файл исключений из контекста
При сборке компилируемых приложений лучше использовать multi-stage build, возможно создание нескольких образов из одного dockerfile
Основная командаПараметрыОписание
docker build 

создание образа

Создание образа из docker файла . - контекст создания (текущая папка)

 

docker build -t test/cowsay-dockerfile .

-tимя слоя

-fрасположение слоя

--squashсжимает все слои в один
docker history<image>инструкции создания образа
docker buildx
для компиляции под разные платформы
Формат exec и формат командной оболочки
Формат  exec
JSON-массив
первый элемент массива: имя выполняемого файла
остальные - параметры,  передаваемые  при  запуске.  
Формат  командной оболочки 
строка произвольной формы, передаваемая для интерпретации в /bin/sh -c. 
Используйте формат exec, чтобы избежать случайного искажения строк командной оболочки, или в тех случаях, когда образ не содержит /bin/sh.
Команды файла:
Основная командаПараметрыОписание
FROM<name>название базового образа
MAINTAINER<name>имя поддерживающего пользователя
USER<name>!Всегда определять! Задает пользователя (по имени или по идентификатору UID) для использования во всех последующих инструкциях RUN, CMD, ENTRYPOINT.
WORKDIR 
рабочий каталог для последующих RUN, CMD, ENTRYPOINT, ADD, COPY. 
можно использовать несколько раз 
можно относительные пути, итоговый путь относительно предыдущего WORKDIR.
RUN<commands>
команды при инициализации образа, обычно установка пакетов
каждая создает новый слой
CMD {''}
команда с аргументами, выполняемая после запуска контейнера. Аргументы могут быть переопределены при запуске контейнера. В файле может присутствовать лишь одна инструкция CMD.
ENTRYPOINT<program name>
Выполняемый файл, который будет вызываться для обработки аргументов, переданных в команду docker run
COPY<> <>
копирование файла из ФС ОС в ФС образа COPY . /src копирует все из текущей папки в папку /src
VOLUME<>
Том в ФС
ENV
Определяет переменные среды внутри образа. На эти переменные можно ссылаться в последующих инструкциях.*
ENV MY_VERSION 1.3
RUN apt-get install -y mypackage=$MY_VERSION
EXPOSE
Сообщает механизму Docker, что в контейнере будет процесс, прослушивающий порт(ы)
не оказывает воздействия на сетевую среду
нужно для аргумента -p в docker run
ONBUILD
инструкция, выполняемая когда образ будет использоваться как основной уровень для другого образа. Полезным при обработке данных, добавляемых в образ-потомок 
(например, инструкция копирования дополнительного кода из заданного каталога и запуска скрипта сборки, обрабатывающего скопированные данные).
* Для различных образов могут использоваться доп. переменные, иногда обязательные. Детали нужно уточнять для конкретного образа.