Infrastructure
Docker Image
Неизменяемый снимок файловой системы с приложением, используемый для запуска контейнеров.
Что такое Docker Image
Docker Image (образ) — неизменяемый слоистый снимок файловой системы, содержащий приложение, его зависимости, конфигурацию и runtime. Образ — шаблон для контейнеров: один образ можно запустить как десятки контейнеров.
Образы хранятся в реестрах (Docker Hub, GHCR, private registry) и идентифицируются по имени и тегу: vllm/vllm-openai:latest, nvidia/cuda:12.3.1-cudnn9-runtime-ubuntu22.04.
Работа с образами
# Скачать образ
docker pull vllm/vllm-openai:latest
# Просмотреть скачанные образы
docker images
# Собрать образ из Dockerfile
docker build -t my-app:v1.0 .
# Запустить контейнер из образа
docker run --gpus all my-app:v1.0
# Опубликовать образ
docker tag my-app:v1.0 myusername/my-app:v1.0
docker push myusername/my-app:v1.0
Слоистая архитектура
Каждая инструкция RUN, COPY в Dockerfile создаёт новый слой. Слои неизменяемы и кешируются:
[ubuntu 22.04] ← базовый слой
[apt install python3] ← слой 1
[pip install torch] ← слой 2 (14 ГБ — torch heavy)
[COPY app.py] ← слой 3 (изменяется часто)
При пересборке образа после изменения app.py слои 1–2 берутся из кеша. Поэтому важно помещать редко меняющиеся слои в начало Dockerfile.
Базовые образы для ML
| Образ | Содержит | Размер |
|---|---|---|
nvidia/cuda:12.3.1-runtime-ubuntu22.04 |
CUDA runtime | ~4 ГБ |
nvidia/cuda:12.3.1-cudnn9-devel-ubuntu22.04 |
CUDA + cuDNN + nvcc | ~8 ГБ |
pytorch/pytorch:2.3.0-cuda12.1-cudnn8-runtime |
PyTorch + CUDA | ~6 ГБ |
vllm/vllm-openai:latest |
vLLM + CUDA + PyTorch | ~12 ГБ |
Связанные термины
- Docker — платформа для образов
- Dockerfile — скрипт сборки образа
- container — запущенный экземпляр образа
- NVIDIA Container Toolkit — нужен для GPU-образов
Готовы запустить GPU-задачу?
Запустить GPU-сервер