2.9 KiB
2.9 KiB
status, type, tags, updated, title, created
| status | type | tags | updated | title | created | |
|---|---|---|---|---|---|---|
| stable | concept |
|
2026-02-27 | Images, Dockerfile - Docker | 2025-12-17 |
Images, Dockerfile - Docker
Запуск контейнеров происходит на основе images (образов). Образы собираются с помощью Dockerfile.
Основные инструкции в Dockerfile:
- FROM - использование базового образа
- RUN - выполнение команд и создание слоя образа
- COPY - копирование в контейнер файлов и папок
- ADD - аналогично COPY, но с распаковкой архивов
Дополнительные:
- LABEL - описание метаданных
- ENV - задание переменных среды
- CMD - описание команд с аргументами для выполнения при запуске контейнера
- WORKDIR - задание рабочей директории для следующей инструкции
- ARG - задание переменных для передачи во время сборки
- ENTRYPOINT - предоставление команды с аргументами для вызова во время выполнения контейнера
- VOLUME - создание точки монтирования для работы с docker volume
- EXPOSE - открытие порта в контейнере
Все эти команды создают отдельный слой (layer) для сборки контейнера
Оптимизация Образа
FROM ubuntu
RUN apt update
RUN apt install python3 -y
RUN apt install python3-dev -y
- Сокращение инструкций RUN (уменьшение количества слоев)
FROM ubuntu
RUN apt update
RUN apt install python3 python3-dev -y
Docker будет пересобирать только те слои, которые были изменены
FROM ubuntu
RUN apt update && \
apt install python3 python3-dev -y
- Удаление кеша пакетных менеджеров
RUN apt update && \
apt install python3 python3-dev -y \
rm -rf /var/lib/apt/lists/*
- Удаление файлов в той же инструкции, где их создавали
- Инструкции, которые предположительно будут часто изменяться, ставить ниже остальных
- Сокращение количество инструкций COPY
RUN apt update && \
apt install python3 python3-dev -y \
rm -rf /var/lib/apt/lists/*
COPY file1 file2 file3 ./dir
- Использование легковесных базовых образов, где есть такая возможность