Реестры образов и деплой
реестр — централизованное хранилище Docker-образов; деплой — это pull образа на сервер и запуск контейнера
Почему это важно: без реестра образы нельзя передать серверу или CI/CD. Понимание тегирования образов — основа любого деплоя
Главная идея
docker push отправляет образ в реестр с тегом; сервер делает docker pull и запускает контейнер из того же образа
Как это выглядит на практике
- docker build -t myapp:v1.2.0 . — сборка образа с семантическим тегом.
- docker tag myapp:v1.2.0 registry.example.com/myapp:v1.2.0 — полное имя для реестра.
- docker push registry.example.com/myapp:v1.2.0 — отправка в реестр.
- На сервере: docker pull registry.example.com/myapp:v1.2.0 && docker run ... — деплой.
- В CI/CD: автоматическая сборка + push при каждом коммите в main.
Что происходит под капотом
- Реестр хранит образы по слоям; уже загруженные слои не передаются повторно.
- docker manifest inspect показывает манифест образа: список слоёв и метаданные.
- Docker Hub — публичный реестр; GitHub Container Registry (ghcr.io), AWS ECR, GCP Artifact Registry — приватные.
- latest — просто тег по умолчанию, не гарантирует последнюю стабильную версию. Используйте семантическое версионирование.
- docker buildx — multi-platform сборка: одна команда собирает образ для linux/amd64 и linux/arm64.
Типичные ошибки и заблуждения
- Ошибка: latest — всегда последняя версия. latest — обычный тег, который нужно явно обновлять.
- Ошибка: реестр — только Docker Hub. AWS ECR, GitHub Container Registry, GitLab Registry — стандартные варианты в enterprise.
- Ошибка: тег v1.0.0 неизменен. Тег можно перезаписать. Только digest (sha256:...) гарантирует конкретный образ.
- Ошибка: docker push всегда отправляет весь образ. Передаются только новые слои.
Ключевые выводы
- Тегируйте образы семантически: v1.2.0, не latest.
- Реестр — мост между CI/CD и продакшен-серверами.
- Слои переиспользуются: push/pull передаёт только изменения.
- Digest (sha256:...) гарантирует воспроизводимость деплоя.
Термины урока
Связь с работой backend-разработчика
Стандартный деплой: CI собирает образ → pushит в реестр с тегом коммита → сервер pullит образ → docker run. Это воспроизводимо, откатываемо и автоматизируемо.
Мини-разбор реальной ситуации
Команда деплоит через rsync и ручной запуск. Откат занимает 30 минут. С реестром и тегами: docker pull myapp:v1.1.0 && docker run — откат любой версии за 30 секунд. История образов в реестре — история деплоев.
Что запомнить
- Тег = версия; используй семантическое версионирование.
- latest не гарантирует ничего — явно указывай версию в продакшене.
- Реестр делает деплой воспроизводимым и откатываемым.
Итог
Реестр образов — связующее звено между разработкой и продакшеном. Правильное тегирование — основа безопасного и предсказуемого деплоя.