Infrastructure

Docker

Платформа для создания и запуска контейнеров — изолированных сред с приложением и зависимостями.

Что такое Docker

Docker — платформа для контейнеризации: упаковки приложения вместе со всеми зависимостями (библиотеки, конфиги, runtime) в стандартный контейнер, который одинаково запускается на любом сервере с Docker. Для ML это означает: «работает у меня» = «работает в продакшене».

Docker стал стандартом деплоя ML-моделей: vLLM, TGI, Ollama, ComfyUI — все публикуют официальные Docker-образы. Это делает деплой тривиальным.

Ключевые концепции

  • Dockerfile — скрипт сборки образа
  • Docker Image — неизменяемый снимок среды
  • Container — запущенный экземпляр образа

Быстрый старт на GPU-инстансе

# Запустить vLLM (всё уже в образе)
docker run --gpus all -p 8000:8000 \
  vllm/vllm-openai:latest \
  --model meta-llama/Llama-3.1-8B-Instruct

# Запустить ComfyUI
docker run --gpus all -p 8188:8188 \
  yanwk/comfyui-boot:latest

# Полезные опции
docker run -d           # фоновый режим
  --name my-server      # имя контейнера
  -v /host:/container   # монтирование папки (модели, данные)
  --restart unless-stopped  # автоперезапуск

Управление контейнерами

docker ps               # запущенные контейнеры
docker logs my-server   # логи
docker exec -it my-server bash  # войти в контейнер
docker stop my-server   # остановить
docker rm my-server     # удалить

NVIDIA Container Toolkit

Для работы GPU в контейнерах нужен NVIDIA Container Toolkit:

# Установка (Ubuntu)
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | \
  sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt install nvidia-container-toolkit
sudo systemctl restart docker

Связанные термины

  • Dockerfile — скрипт сборки Docker-образа
  • Docker Image — образ, из которого запускается контейнер
  • NVIDIA Container Toolkit — GPU-поддержка в Docker
  • container — запущенный Docker-экземпляр

Готовы запустить GPU-задачу?

Запустить GPU-сервер