Dockerfile
DockerFile - набор инструкций по установке и настройке контейнера. Также используется для создания преднастроенных образов. Обычно dockerfile расположен в директории, из которой вызывается команда.
Имя файла: Dockerfile (без расширения).
Контекст создания - набор локальных файлов/каталогов, к которым можно обращаться через copy/add.
/ не стоит использовать как контекст, полностью включается в архив
# комментарии
При сборке образа попытки использования кэша идут до первого промаха. Затем кэш не проверяется.
.dockerignore - файл исключений из контекста
При сборке компилируемых приложений лучше использовать multi-stage build, возможно создание нескольких образов из одного dockerfile
Основная команда | Параметры | Описание |
docker build |
создание образа Создание образа из docker файла . - контекст создания (текущая папка)
|
|
-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 |
Определяет переменные среды внутри образа. На эти переменные можно ссылаться в последующих инструкциях.*
|
|
EXPOSE |
Сообщает механизму Docker, что в контейнере будет процесс, прослушивающий порт(ы)
не оказывает воздействия на сетевую среду
нужно для аргумента -p в docker run
|
|
ONBUILD |
инструкция, выполняемая когда образ будет использоваться как основной уровень для другого образа. Полезным при обработке данных, добавляемых в образ-потомок
(например, инструкция копирования дополнительного кода из заданного каталога и запуска скрипта сборки, обрабатывающего скопированные данные).
|
* Для различных образов могут использоваться доп. переменные, иногда обязательные. Детали нужно уточнять для конкретного образа.