Skip to content

Контейнеризация

Docker

Термины

  • Образ (image) — основа для создания контейнеров. В образе содержится базовая операционная система, код приложения и необходимые библиотеки.
  • Платформа Docker (Docker Platform) — программа, позволяющая упаковывать приложения в контейнеры и запускать их на серверах.
  • Движок Docker (Docker Engine) — клиент-серверное приложение, управляющее контейнерами.
  • Клиент Docker (Docker Client) — инструмент для взаимодействия с Docker через командную строку. Клиент отправляет команды демону через API.
  • Демон Docker (Docker Daemon) — сервер Docker, который обрабатывает запросы API и управляет образами, контейнерами, сетями и томами.
  • Тома Docker (Docker Volumes) — механизм постоянного хранения данных, используемых приложениями в контейнерах.
  • Реестр Docker (Docker Registry) — удалённая платформа для хранения образов Docker.
  • Сетевые механизмы Docker (Docker Networking) — позволяют организовывать связь между контейнерами, которые могут работать на одном или разных хостах.
  • Docker Compose — инструмент для упрощённого развёртывания многоконтейнерных приложений. Команды описываются в файле docker-compose.yml и выполняются через CLI Docker Compose.

Инструкции Dockerfile

  • FROM — задаёт базовый (родительский) образ.
  • LABEL — добавляет метаданные, например, информацию об авторе образа.
  • ENV — устанавливает постоянные переменные окружения.
  • RUN — выполняет команду и создаёт слой образа (например, установка пакетов).
  • COPY — копирует файлы и папки в контейнер.
  • ADD — копирует файлы и папки, может распаковывать локальные .tar-архивы.
  • CMD — задаёт команду и аргументы, которые выполняются при запуске контейнера (может быть только одна инструкция CMD).
  • WORKDIR — устанавливает рабочую директорию для последующих инструкций.
  • ARG — задаёт переменные, передаваемые во время сборки образа.
  • ENTRYPOINT — задаёт команду с аргументами, которые выполняются при запуске контейнера и не переопределяются.
  • EXPOSE — указывает, какие порты должны быть открыты.
  • VOLUME — создаёт точку монтирования для постоянного хранилища.

Сборка образа

  • Dockerfile содержит инструкции по созданию образа. Инструкции пишутся заглавными буквами, обрабатываются сверху вниз.
    dockerfile example
    FROM python:3.7.2-alpine3.8
    LABEL maintainer="jeffmshale@gmail.com"
    # Устанавливаем зависимости
    RUN apk add --update git
    # Задаём текущую рабочую директорию
    WORKDIR /usr/src/my_app_directory
    # Копируем код из локального контекста в рабочую директорию образа
    COPY . .
    # Задаём значение по умолчанию для переменной
    ARG my_var=my_default_value
    # Настраиваем команду, которая должна быть запущена в контейнере во время его выполнения
    ENTRYPOINT ["python", "./app/my_script.py", "my_var"]
    # Открываем порты
    EXPOSE 8000
    # Создаём том для хранения данных
    VOLUME /my_volume
    

Файл .dockerignore

  • Содержит список файлов и папок (имён или шаблонов), которые Docker игнорирует при сборке образа.
  • Например, шаблон *.jpg исключит все файлы с расширением .jpg.
  • Можно использовать комментарии, начиная строку с #.

Docker-compose

Инструмент для описания и запуска многоконтейнерных приложений через файл docker-compose.yml, упрощает управление комплексными конфигурациями.


Podman

Альтернатива Docker для управления контейнерами, совместимая с Docker CLI и образами, но работающая без демона.