0Pricing
Docker & DevOps Fundamentals · Урок

Создание пользовательских образов Docker

Создайте первый пользовательский образ Docker для простого приложения, правильно добавив ему тег и версию.

«Создание пользовательских образов Docker» — бесплатный урок Docker & DevOps Fundamentals на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Docker & DevOps Fundamentals, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Docker & DevOps Fundamentals содержит 4 уроков всего.

Создайте свой первый образ Docker

Зачем создавать собственные образы? Они позволяют упаковать конкретное приложение, его зависимости и конфигурацию в один переносимый модуль. Это важно для единообразия и простого развёртывания.

Способ создания такого образа задаётся в файле под названием Dockerfile.

Создание пользовательских образов Docker — иллюстрация 1

Наше простое веб-приложение

Мы контейнеризируем очень простое веб-приложение на Python Flask. При переходе по его веб-адресу оно просто возвращает «Hello from Docker!».

Представим, что в каталоге находятся следующие файлы:

  • app.py: код приложения на Python
  • requirements.txt: список зависимостей Python
  • Dockerfile: инструкции для создания образа

Код приложения Flask

Это наше простое приложение Flask на Python. Оно прослушивает порт 5000 и отвечает сообщением «Hello from Docker! ».

Вы можете запустить его локально (после установки Flask), чтобы увидеть его в действии!

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello():
    return 'Hello from Docker!'

if __name__ == '__main__':
    app.run(debug=True, host='0.0.0.0')

Указание зависимостей

Нашему приложению нужна библиотека Flask. Мы указываем её в файле requirements.txt. Этот файл сообщает Docker (и менеджеру пакетов Python, pip), что необходимо установить.

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

Flask==2.3.2

Анатомия нашего Dockerfile

Dockerfile — это текстовый файл с инструкциями для сборки образа. Каждая инструкция создаёт слой. Вот что мы будем использовать:

  • FROM: указывает базовый образ (например, Python).
  • WORKDIR: задаёт рабочий каталог внутри контейнера.
  • COPY: копирует файлы с вашего локального компьютера в образ.
  • RUN: выполняет команды (например, устанавливает зависимости).
  • EXPOSE: сообщает Docker о портах, которые прослушивает контейнер.
  • CMD: задаёт команду по умолчанию, выполняемую при запуске контейнера.

Создание Dockerfile

Вот полный Dockerfile для нашего приложения Flask. Поместите этот файл в тот же каталог, что и app.py и requirements.txt.

# Use an official Python runtime as a parent image
FROM python:3.9-slim-buster

# Set the working directory in the container
WORKDIR /app

# Copy the current directory contents into the container at /app
COPY requirements.txt .
COPY app.py .

# Install any needed packages specified in requirements.txt
RUN pip install --no-cache-dir -r requirements.txt

# Make port 5000 available to the world outside this container
EXPOSE 5000

# Run app.py when the container launches
CMD ["python", "app.py"]

Команда `docker build`

Теперь соберём наш образ! Откройте терминал в каталоге, где находятся ваш Dockerfile и файлы приложения.

Флаг -t присваивает нашему образу имя (my-flask-app) и версию (1.0). Символ . сообщает Docker, что в качестве контекста сборки нужно использовать текущий каталог.

docker build -t my-flask-app:1.0 .

Проверка нового образа

После завершения сборки вы можете убедиться, что новый образ существует, выведя список всех локальных образов Docker.

В результатах найдите my-flask-app с тегом 1.0.

docker images

Запуск контейнера приложения

Пора увидеть приложение в действии! Используйте docker run, чтобы создать и запустить контейнер из вашего образа.

Параметр -p 5000:5000 сопоставляет порт 5000 на вашем хост-компьютере с портом 5000 внутри контейнера. Параметр -d запускает контейнер в отсоединённом режиме (в фоновом режиме).

docker run -d -p 5000:5000 my-flask-app:1.0

Откройте в браузере адрес http://localhost:5000, чтобы увидеть сообщение «Hello from Docker! ».

Рекомендации по тегированию образов

Теги необходимы для управления разными версиями образов. Распространённая практика — использовать семантическое версионирование (например, 1.0.0, 2.1.5), а также тег latest.

Вы можете добавить к образу несколько тегов с помощью команды docker tag:

docker tag my-flask-app:1.0 my-flask-app:latest

Это позволяет обращаться к одному и тому же образу под разными именами, что делает его использование при развёртывании более гибким.

Быстрая проверка

Рассмотрите следующий Dockerfile и команду сборки:

# Dockerfile content
FROM alpine:latest
WORKDIR /app
COPY . .
CMD ["echo", "Hello"]

docker build -t my-app:v1 .

Какое из следующих утверждений верно относительно команды docker build -t my-app:v1 .?

Итоги: пользовательские образы

Отличная работа! Вы научились:

  • Подготавливать простое приложение к контейнеризации.
  • Писать базовый Dockerfile с использованием ключевых инструкций (FROM, WORKDIR, COPY, RUN, EXPOSE, CMD).
  • Собирать пользовательский образ Docker с помощью docker build -t.
  • Проверять образ с помощью docker images.
  • Запускать контейнер из пользовательского образа с помощью docker run -p.
  • Понимать важность тегирования и версионирования образов.

Далее мы подробнее разберём структуру образов Docker, состоящих из слоёв, а также способы оптимизации их размера и времени сборки!

Часто задаваемые вопросы

Урок «Создание пользовательских образов Docker» бесплатный?

Да — полный текст урока «Создание пользовательских образов Docker» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Docker & DevOps Fundamentals, подпишись на CoddyKit PRO. Курс Docker & DevOps Fundamentals содержит 4 уроков всего.

Чему я научусь в уроке «Создание пользовательских образов Docker»?

Создайте первый пользовательский образ Docker для простого приложения, правильно добавив ему тег и версию. Ты практикуешь Docker & DevOps Fundamentals с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Docker & DevOps Fundamentals?

Предыдущий опыт не требуется. Docker & DevOps Fundamentals на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.

Сколько времени занимает урок «Создание пользовательских образов Docker»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Docker & DevOps Fundamentals?

Да. Каждый урок Docker & DevOps Fundamentals включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Понимание Dockerfile
  2. Создание пользовательских образов Docker
  3. Слои образа и оптимизация
  4. Многоэтапные сборки и уменьшение образов
← Назад к Docker & DevOps Fundamentals