Главная/Registry/Обзор

Раздел 14. Registry

Registry — это хранилище образов и единственный механизм, связывающий сборку с развёртыванием. Всё, что касается воспроизводимости доставки, решается здесь: как назвать образ, какой тег считать неизменяемым, как убедиться, что развёрнут именно тот артефакт, который был собран и протестирован.

Раздел короткий, но содержит решения, которые тяжело менять задним числом. Стратегия tagging, выбранная в начале проекта, определяет, будет ли возможен откат на предыдущую версию через полгода.

Цели обучения

После раздела учащийся сможет:

  • объяснить строение полного имени образа и роль каждой части;
  • аутентифицироваться в registry и понимать, где и как хранятся credentials;
  • публиковать и получать образы, проверяя целостность по digest;
  • спроектировать стратегию tagging с неизменяемыми тегами и подвижными указателями;
  • объяснить, почему развёртывание по тегу latest делает откат ненадёжным;
  • запустить локальный registry и использовать его для разработки и тестирования;
  • настроить TLS для registry и объяснить риски insecure registries;
  • организовать аутентификацию из CI без раскрытия учётных данных;
  • спланировать cleanup policy и объяснить, почему удаление тегов не освобождает место автоматически.

Предварительные знания

Материалы

  1. Основы registry
    Что такое registry, repository и namespace. Полное имя образа: registry/namespace/repository:tag и @digest. Docker Hub, GitHub Container Registry, GitLab Registry, private registry. Что происходит при push и pull: манифест, слои, переиспользование существующих слоёв. Rate limits как версионно-зависимая тема.

  2. Аутентификация
    docker login и содержимое ~/.docker/config.json. Credential helpers и хранение паролей вне файла. Токены доступа вместо паролей. Аутентификация в CI через переменные окружения и --password-stdin. Что нельзя делать: пароль в командной строке, коммит config.json.

  3. Локальный registry
    Запуск registry в container, хранение данных в volume. Публикация и получение образа. Настройка TLS. Insecure registries: как настроить, почему это допустимо только в изолированной сети, какие риски создаёт. Использование локального registry для integration tests.

  4. Стратегия tagging
    Неизменяемые теги против подвижных. Тег по commit SHA как основа воспроизводимости. Семантические версии, теги окружений, latest. Развёртывание по digest. Cleanup policy и почему удаление тега не освобождает место. Практическая схема тегов для типового проекта.

  5. Практические задания
    Лабораторные задания раздела с проверкой результата.

Рекомендуемый порядок чтения

Последовательный: 01 → 02 → 03 → 04 → exercises.

Урок 04 наиболее ценен: он про проектное решение, а не про команды.

Практические задания

ЗаданиеТип
1Запустить локальный registry, опубликовать образ, получить его на «чистой» сторонеобяз.
2Сравнить digest до публикации и после получения, объяснить результатобяз.
3Присвоить одному образу три тега и показать, что слои не дублируютсяобяз.
4Развернуть образ по digest и объяснить, чем это надёжнее развёртывания по тегуобяз.
5Настроить TLS для локального registryдоп.
6Аутентифицироваться в registry через --password-stdin и проверить, что пароль не попал в историю shellдоп.
7Спроектировать схему тегов для проекта с ветками main, release/* и feature-ветками
8Образ в production отличается от собранного в CI при одинаковом теге. Объяснить, как это возможнодиаг.

Полные формулировки — в exercises.md.

Критерии завершения раздела

Раздел пройден, когда учащийся может без подсказок:

  1. Разобрать полное имя образа на составляющие и объяснить, что подставляется по умолчанию.
  2. Объяснить, почему развёртывание по latest не позволяет надёжно откатиться.
  3. Опубликовать образ в локальный registry и подтвердить целостность по digest.
  4. Назвать три способа хранения credentials и выбрать подходящий для CI.
  5. Предложить схему тегов, обеспечивающую и удобство, и воспроизводимость.

Проверьте себя: Quiz 14.

Что дальше

Образ можно доставить. Следующий раздел отвечает на вопрос, который должен предшествовать доставке: как убедиться, что образ работает.

Навигация

← Предыдущий раздел: Observability и диагностика
Вернуться к главному оглавлению
Следующий раздел: Testing →

Markdown на GitHub ↗