Ответ
Docker Image — это неизменяемый (immutable) шаблон, который содержит все необходимое для запуска приложения: код, среду выполнения, библиотеки, переменные окружения и конфигурационные файлы.
Образ создается с помощью файла инструкций Dockerfile
.
Ключевые аспекты:
- Слои: Каждая инструкция в
Dockerfile
(например,RUN
,COPY
,ADD
) создает новый слой в образе. Docker кэширует слои, что ускоряет последующие сборки. - Оптимизация: Для уменьшения размера образа и ускорения сборки рекомендуется объединять команды
RUN
, использовать.dockerignore
для исключения ненужных файлов и выбирать минималистичные базовые образы (например,alpine
).
Пример Dockerfile
для Python-приложения:
# 1. Указываем базовый образ
FROM python:3.9-slim
# 2. Устанавливаем рабочую директорию внутри контейнера
WORKDIR /app
# 3. Копируем файл зависимостей и устанавливаем их
# Этот шаг выполняется отдельно, чтобы использовать кэш Docker,
# если код меняется, а зависимости - нет.
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
# 4. Копируем остальной код приложения
COPY . .
# 5. Указываем команду для запуска приложения
CMD ["python", "./app.py"]
Сборка образа выполняется командой:
docker build -t my-python-app:latest .