Создание собственного Docker-образа с помощью Dockerfile. Список инструкций для Docker файла и примеры.

Есть 2 варианта для создания собственных Docker-образов. Один из это обновление контейнера и создание коммита изменений. Но наиболее часто используемым является создание нового образа на основе Инструкций, прописанных в специальном Dockerfile.

Когда вы используете Dockerfile для создания образа, в основном в этом файле вы указываете список инструкций, которые будут применены к базовому образу.

Файл Dockerfile, на самом деле, представляет собой точное различие между базовым образом, который берется за основу, и образом, который пользователь желает создать. В Docker-файле с помощью инструкци указывается последовательность изменений, который вносим в базовый образ.

Список инструкций в Dockerfile.

FROM — указывает какой базовый образ берется за основу. Например FROM Ubuntu:18.04.

RUN — инструкция указывает как команды будут выполняться в среде базового образа. После выполнения команды RUN будет сформирован новый слой с изменениями. Рекомендуется по возможности объединять и наиболее часто изменяющиеся инструкции указывать ближе к концу Dockerfile. Например RUN apt-get update && apt-get install -y mc

COPY используется для копирования файлов с локальной машины, в которой билдится контейнер, внутрь контейнера. Эта инструкция очень часто используется для отправки окружения,
конфигурационных файлов и файлов кода, которые должны быть выполнены в приложениях внутри контейнера.

CMD сообщает, какая команда будет выполнена как стандартная. Задается команда по умолчанию. Например можно использовать в качестве дефолтной команды bash , и тогда в случае если создаваемый образ будет использоваться для запуска контейнера, и не будет передана команда для выполнения, то при запуске контейнера будет выполнен bash.

WORKDIR указывает какая директория внутри контейнера будет рабочей по умолчанию. Например WORKDIR /app

COPY — дает возможность скопировать каталоги или файлы из локальной машины, внутрь собираемого образа. например COPY . /app

Пример создания Docker-образа c сервером Nginx.

Создается файл с именем Dockerfile и следующим содержимым:

FROM ubuntu:19.10

RUN apt-get update && apt-get install nginx -y

CMD bash

Далее можно данный образ выложить на официальный репозиторий DockerHub и в дальнейшем создавать образ командой:

docker image build -t tovsky/ubuntu:19.10 .

В команде выше с помощью ключа -t указывается tovsky/ubuntu — это имя задаваемое нами для образа. а 19.10 это тег образа. В конце точка «.» указывает на контекст сборки образа (в данном случае текущая директория, в ней должен лежать Dockerfile). Все файлы из текущей папки будут отправлены в службу Docker, и только они могут быть использованы для манипуляций (на примере Dockerfile с использованием COPY).

Важно отметить, что файл Dockerfile представляет собой последовательность. Инструкции читаются сверху вниз, и каждая строка с инструкцией выполняется за один раз. Если какие-либо инструкции зависят от других, эта зависимость должна быть описана ранее в документе.

Результат каждой файловой инструкции сохраняется в локальном кеше. Если Dockerfile не изменяется при следующем создании образа (сборке), то процесс не займет много времени, потому что все будет в кеше. Если есть какие-то изменения, только модифицированная инструкция и последующие будут выполнены заново, а за основу из кеша будет взят неизменный слой. Лучше использовать кеш Dockerfile, и указывать инструкции, которые часто изменяются ближе к концу Dockerfile.

Хранение инструкций в файле Dockerfile позволяет нам иметь
точное представление о том, какие изменения были внесены в базовый образ, это своего рода регистрация изменений в системе контроля версий.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *