36 lines
1.9 KiB
Markdown
36 lines
1.9 KiB
Markdown
# 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]]
|