# 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]]