Контейнеризация
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 и образами, но работающая без демона.