логотип PurpleSchool
логотип PurpleSchool

Создание образа в Docker

Автор

Олег Марков

Введение

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

Подготовка к созданию Docker-образа

Перед тем как создать образ, нужно подготовить окружение и ресурсы. Важно установить Docker на вашей системе. Вы можете загрузить и установить Docker с официального сайта, следуя инструкциям по установке для вашей операционной системы. После установки вам потребуется создать файл, называемый Dockerfile.

Создание Dockerfile

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

Структура Dockerfile

В Dockerfile инструкции выполняются последовательно. Давайте разберемся на примере:

# Используем базовый образ Ubuntu
FROM ubuntu:20.04

# Устанавливаем необходимые обновления и зависимости
RUN apt-get update && apt-get install -y python3 python3-pip

# Копируем рабочие файлы в образ
COPY . /app

# Устанавливаем рабочую директорию
WORKDIR /app

# Устанавливаем зависимости Python
RUN pip3 install -r requirements.txt

# Определяем команду по умолчанию
CMD ["python3", "app.py"]

Пояснения к коду:

  • FROM указывает базовый образ, на основе которого будет создан ваш.
  • RUN выполняет команды в контейнере. В этом примере устанавливаются обновления и пакеты Python.
  • COPY копирует файлы или директории с вашего компьютера внутрь образа в заданное местоположение.
  • WORKDIR устанавливает рабочую директорию для команд RUN, CMD, ENTRYPOINT.
  • CMD задает команду, которая будет выполнена при запуске контейнера на основе созданного образа.

Построение Docker-образа

После того как Dockerfile будет готов, можно приступить к процессу построения образа.

Команда docker build

Для создания образа используется команда docker build. Она считывает инструкции из Dockerfile и собирает на их основе образ.

docker build -t myapp:latest .

Пояснения к команде:

  • -t позволяет задать имя и тег для образа, в данном случае - myapp:latest.
  • . указывает на текущий каталог как контекст для сборки. Важно, чтобы Dockerfile находился в этом каталоге.

Подробности процесса сборки

Во время сборки Docker анализирует каждую строку Dockerfile и создает промежуточные образы. Это похоже на слоеный пирог, где каждый слой – это одна команда. Благодаря такой архитектуре, Docker кеширует промежуточные слои, и при повторной сборке использует их, если они не изменились, что значительно ускоряет процесс.

Управление созданным образом

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

Запуск контейнера

С помощью команды docker run вы можете запустить контейнер на основе созданного образа.

docker run -d -p 5000:5000 myapp:latest
  • -d запускает контейнер в фоновом режиме.
  • -p 5000:5000 связывает порт 5000 вашего локального компьютера с портом контейнера, удобным для веб-приложения.

Просмотр созданных образов

Чтобы увидеть все созданные образы, используйте команду:

docker images

Она выведет список всех образов в системе, их теги, идентификаторы, размер и дату создания.

Удаление образов

Когда образ больше не нужен, его можно удалить с помощью команды docker rmi:

docker rmi myapp:latest

Заключение

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

Карта развития разработчика

Получите полную карту развития разработчика по всем направлениям: frontend, backend, devops, mobile