3.4 KiB
3.4 KiB
status, type, tags, created, updated, aliases
| status | type | tags | created | updated | aliases | ||||
|---|---|---|---|---|---|---|---|---|---|
| stable | concept |
|
2025-12-17 | 2026-05-07 |
|
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
- Использование легковесных базовых образов, где есть такая возможность
Связанные заметки
- Environment Variables — инструкция
ENVв Dockerfile устанавливает переменные окружения внутри контейнера; это расширение того же механизма Linux env vars - Volume - Docker — инструкция
VOLUMEв Dockerfile объявляет точки монтирования для Docker Volumes