# Docker — Images & Dockerfile (one-screen)

## 1) Image: из чего состоит
**Docker image** собирается из **слоёв (layers)**. Почти каждая инструкция Dockerfile добавляет слой.
Слои кэшируются: при изменении “ранних” слоёв пересобирается всё ниже.

## 2) Ключевые инструкции Dockerfile
- **FROM** — базовый образ.
- **RUN** — команды при сборке (формируют слой).
- **COPY** — копирование файлов/папок в image.
- **ADD** — как COPY, но умеет распаковать архивы (использовать осознанно).

Часто используемые:
- **WORKDIR** — рабочая директория.
- **ENV** — переменные окружения.
- **ARG** — переменные только на этапе build.
- **CMD** — команда по умолчанию (можно переопределять).
- **ENTRYPOINT** — “жёсткая” точка входа.
- **EXPOSE** — документирует порт.
- **VOLUME** — точка монтирования volume.

## 3) Оптимизация образа (практика)
- Склеивать RUN:
```dockerfile
RUN apt update && apt install -y python3 python3-dev \
 && rm -rf /var/lib/apt/lists/*
```
- Чистить кеш пакетного менеджера.
- Удалять временные файлы **в той же инструкции**, где создавались.
- Менее изменчивое — выше, часто меняющееся — ниже.
- COPY делать батчами.
- По возможности брать лёгкие base images.

---
**Source:** [[Images, Dockerfile - Docker|Images, Dockerfile - Docker]]
