---
status: stable
type: concept
tags:
  - devops
updated: 2026-02-27
title: Images, Dockerfile - Docker
created: 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) для сборки контейнера

## Оптимизация Образа

```dockerfile
FROM ubuntu

RUN apt update
RUN apt install python3 -y
RUN apt install python3-dev -y
```

- Сокращение инструкций **RUN** (уменьшение количества слоев)

```dockerfile
FROM ubuntu

RUN apt update
RUN apt install python3 python3-dev -y
```

> Docker будет пересобирать только те слои, которые были изменены

```dockerfile
FROM ubuntu

RUN apt update && \
	apt install python3 python3-dev -y
```

- Удаление кеша пакетных менеджеров

```dockerfile
RUN apt update && \
	apt install python3 python3-dev -y \
	rm -rf /var/lib/apt/lists/*
```

- Удаление файлов в той же инструкции, где их создавали
- Инструкции, которые предположительно будут часто изменяться, ставить ниже остальных
- Сокращение количество инструкций **COPY**

```dockerfile
RUN apt update && \
	apt install python3 python3-dev -y \
	rm -rf /var/lib/apt/lists/*

COPY file1 file2 file3 ./dir
```

- Использование легковесных базовых образов, где есть такая возможность

![](Images,%20Dockerfile%20-%20Docke.png)