Понимание Dockerfile
Изучите синтаксис и распространённые инструкции Dockerfile, задающие правила сборки образа.
«Понимание Dockerfile» — бесплатный урок DevOps Bootcamp на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения DevOps Bootcamp, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс DevOps Bootcamp содержит 4 уроков всего.
Что такое Dockerfile?
Представьте, что у вас есть рецепт выпечки торта. Dockerfile очень похож на него! Это обычный текстовый файл, содержащий все инструкции, необходимые Docker для автоматического создания образа Docker.
Вместо смешивания ингредиентов вы указываете Docker, какую базовую OS использовать, какое программное обеспечение установить и как настроить приложение внутри образа.

Преимущества: автоматизация сборки
Dockerfile даёт множество преимуществ в рабочем процессе разработки:
- Автоматизация: больше никаких ручных шагов! Docker каждый раз единообразно создаёт образы.
- Контроль версий: Dockerfile — это код, поэтому изменения можно отслеживать с помощью Git.
- Воспроизводимость: любой, у кого есть Dockerfile, сможет создать точно такой же образ.
- Прозрачность: вы видите, что именно входит в образ.
Базовая структура Dockerfile
Dockerfile представляет собой список инструкций, выполняемых по порядку сверху вниз. Каждая инструкция создаёт новый слой в образе.
Базовый синтаксис прост:
INSTRUCTION argumentsКомментарии начинаются с символа #, как и во многих языках программирования. Инструкции Docker нечувствительны к регистру, но обычно их записывают прописными буквами.
Выбор базового образа с помощью FROM
Каждый Dockerfile должен начинаться с инструкции FROM. Она указывает базовый образ, на основе которого будет создан новый образ. Обычно этот базовый образ содержит OS (например, Alpine Linux), а иногда и предварительно установленное программное обеспечение.
Представьте, что вы выбираете отправную точку — чистый холст или холст, на котором уже есть несколько основных цветов.
FROM alpine:latestВыполнение команд с помощью RUN
Инструкция RUN используется для выполнения команд в процессе создания образа. Здесь можно устанавливать пакеты, создавать каталоги или компилировать код.
Каждая команда RUN создаёт новый слой, поэтому объединение команд с помощью && помогает уменьшить размер образа.
RUN apk update && apk add gitКоманда по умолчанию с помощью CMD
Инструкция CMD задаёт команды или аргументы по умолчанию для запускаемого контейнера. В отличие от RUN, команды CMD выполняются при запуске контейнера, а не во время сборки.
Если при запуске контейнера указать команду, например docker run my-image ls, она заменит инструкцию CMD.
CMD ["echo", "Hello from container!"]Добавление файлов с помощью COPY
Инструкция COPY копирует новые файлы или каталоги с хост-компьютера, на котором создаётся образ, в файловую систему образа Docker по указанному пути.
Обычно ей отдают предпочтение перед ADD, поскольку она прозрачнее и копирует только локальные файлы.
COPY ./app /usr/src/appРабочий каталог и переменные среды
WORKDIR задаёт рабочий каталог для всех следующих инструкций RUN, CMD, ENTRYPOINT, COPY и ADD. Это делает Dockerfile понятнее.
ENV задаёт переменные среды. Эти переменные доступны последующим инструкциям Dockerfile, а также запущенному контейнеру.
WORKDIR /app
ENV PORT=8080Информация о портах с помощью EXPOSE
Инструкция EXPOSE сообщает Docker, что во время работы контейнер прослушивает указанные сетевые порты. Она фактически не публикует порт.
Считайте это документацией. Чтобы сделать порт доступным извне контейнера, необходимо использовать параметр -p с командой docker run.
EXPOSE 80
EXPOSE 443Ваш первый простой Dockerfile
Соберём всё вместе! Вот базовый Dockerfile, который настраивает образ Alpine Linux, устанавливает пакет и задаёт команду по умолчанию.
Чтобы создать образ, сохраните этот файл под именем Dockerfile в пустом каталоге, затем выполните в терминале команду docker build -t my-simple-app ..
FROM alpine:latest
LABEL maintainer="CoddyKit"
RUN apk update && apk add --no-cache bash
WORKDIR /app
CMD ["bash", "-c", "echo 'Hello from my custom Alpine image!' && sleep 3600"]Тест по инструкциям Dockerfile
Проверьте свои знания! Какие из этих инструкций выполняются во время создания образа, напрямую изменяя его содержимое или структуру?
Итоги: основы Dockerfile
Вы сделали большой шаг в понимании образов Docker! Мы узнали, что Dockerfile — это текстовые файлы с инструкциями для создания образов, которые дают такие преимущества, как автоматизация и воспроизводимость.
Основные изученные инструкции:
FROM: задаёт базовый образ.RUN: выполняет команды во время сборки.CMD: задаёт команду по умолчанию для запущенного контейнера.COPY: добавляет файлы с хост-компьютера в образ.WORKDIR,ENV,EXPOSE: настраивают среду образа и контейнера.
Часто задаваемые вопросы
Урок «Понимание Dockerfile» бесплатный?
Да — полный текст урока «Понимание Dockerfile» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс DevOps Bootcamp, подпишись на CoddyKit PRO. Курс DevOps Bootcamp содержит 4 уроков всего.
Чему я научусь в уроке «Понимание Dockerfile»?
Изучите синтаксис и распространённые инструкции Dockerfile, задающие правила сборки образа. Ты практикуешь DevOps Bootcamp с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать DevOps Bootcamp?
Предыдущий опыт не требуется. DevOps Bootcamp на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Понимание Dockerfile»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке DevOps Bootcamp?
Да. Каждый урок DevOps Bootcamp включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Понимание Dockerfile
- Создание пользовательских образов Docker
- Слои образа и оптимизация
- Многоэтапные сборки и уменьшение образов