vault backup: 2026-05-24 15:03:28
This commit is contained in:
@@ -0,0 +1,91 @@
|
||||
---
|
||||
status: stable
|
||||
type: concept
|
||||
tags:
|
||||
- devops
|
||||
- containerization
|
||||
- docker
|
||||
created: 2025-12-17
|
||||
updated: 2026-05-07
|
||||
title: Images, Dockerfile - Docker
|
||||
---
|
||||
|
||||
# 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
|
||||
```
|
||||
|
||||
- Использование легковесных базовых образов, где есть такая возможность
|
||||
|
||||

|
||||
|
||||
## Связанные заметки
|
||||
- [[Environment Variables]] — инструкция `ENV` в Dockerfile устанавливает переменные окружения внутри контейнера; это расширение того же механизма Linux env vars
|
||||
- [[Volume - Docker]] — инструкция `VOLUME` в Dockerfile объявляет точки монтирования для Docker Volumes
|
||||
Reference in New Issue
Block a user