Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • Машинное обучение
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Истории успеха
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Yandex Container Registry
  • Начало работы
    • Все инструкции
    • Установить и настроить Docker
    • Аутентифицироваться в Container Registry
      • Получить информацию об имеющихся политиках удаления
      • Создать политику удаления
      • Изменить политику удаления
      • Сделать тестовый запуск политики удаления
      • Удалить политику удаления
    • Сканирование Docker-образа на наличие уязвимостей
    • Создание триггера для реестра
  • Yandex Container Solution
  • Управление доступом
  • Правила тарификации
  • Справочник Terraform
  • Метрики Monitoring
  • Аудитные логи Audit Trails
  • Решение проблем
  • Вопросы и ответы
  • Обучающие курсы
  1. Пошаговые инструкции
  2. Управление политиками автоматического удаления Docker-образов
  3. Создать политику удаления

Создать политику удаления

Статья создана
Yandex Cloud
Улучшена
Обновлена 21 апреля 2025 г.

Задать политику удаления можно только для репозитория. Чтобы узнать имя репозитория, получите список репозиториев в реестре.

Консоль управления
CLI
Terraform
API
  1. В консоли управления выберите каталог, в котором создан реестр.
  2. В списке сервисов выберите Container Registry.
  3. Выберите реестр и нажмите на строку с его именем.
  4. Выберите репозиторий и нажмите на строку с его именем.
  5. На панели слева нажмите Жизненный цикл.
  6. В правом верхнем углу нажмите кнопку Создать.
  7. Задайте параметры политики удаления:
    • (Опционально) Имя.
    • (Опционально) Описание.
    • Статус — статус политики удаления после создания. Не рекомендуется создавать сразу активную политику со статусом ACTIVE.
    • В блоке Правила политики удаления добавьте правила:
      1. Нажмите кнопку Добавить.

      2. Задайте параметры правила:

        • Тег — тег Docker-образа для фильтрации. Поддерживаются регулярные выражения языка Java. Например, выражение test.* позволяет получить все образы с тегами, начинающимися на test.
        • Образов без тегов — флаг для применения правила к Docker-образам без тегов.
        • Время от создания образа, в сутках — время, через которое Docker-образ может попадать под политику удаления.
        • Образов оставить — количество Docker-образов, которые не будут удалены, даже если подходят по правилу.
        • (Опционально) Описание.
  8. Нажмите кнопку Создать.

Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.

  1. Подготовьте правила политики и сохраните их в файл rules.json.

    Пример содержимого файла с правилами, где:

    • description — описание правила политики.
    • tag_regexp — тег Docker-образа для фильтрации. Поддерживаются регулярные выражения языка Java. Например, выражение test.* позволяет получить все образы с тегами, начинающимися на test.
    • untagged — флаг для применения правила к Docker-образам без тегов.
    • expire_period — время, через которое Docker-образ может попадать под политику удаления. Формат параметра — число и единица измерения s, m, h или d (секунды, минуты, часы или дни). expire_period должен быть кратен 24 часам.
    • retained_top — количество Docker-образов, которые не будут удалены, даже если подходят по правилу.
    [
      {
        "description": "delete prod Docker images older than 60 days but retain 20 last ones",
        "tag_regexp": "prod",
        "expire_period": "60d",
        "retained_top": 20
      },
      {
        "description": "delete all test Docker images except 10 last ones",
        "tag_regexp": "test.*",
        "retained_top": 10
      },
      {
        "description": "delete all untagged Docker images older than 48 hours",
        "untagged": true,
        "expire_period": "48h"
      }
    ]
    
  2. Создайте политику удаления, выполнив команду:

    yc container repository lifecycle-policy create \
      --repository-name crp3cpm16edq********/ubuntu \
      --name test-policy \
      --description "disabled lifecycle-policy for tests" \
      --rules ./rules.json
    

    Где:

    • --repository-name — имя репозитория.

    • --rules — путь к файлу с описанием политик.

    • --description — (опционально) описание политики удаления.

    • --name — (опционально) имя политики. Требования к имени:

      • длина — от 2 до 63 символов;
      • может содержать строчные буквы латинского алфавита, цифры и дефисы;
      • первый символ — буква, последний — не дефис.

    Примечание

    Политика по умолчанию создается выключенной (в статусе DISABLED). Не рекомендуется создавать сразу активную политику с флагом --active.

    Результат:

    id: crp6lg1868p3********
    name: test-policy
    repository_id: crp3cpm16edq********
    ...
    - description: delete all untagged Docker images older than 48 hours
      expire_period: 172800s
      untagged: true
    

    Значение параметра expired_period в ответе отображается в секундах. Это техническое ограничение, формат будет изменен.

  3. Проверьте, что политика создалась, выполнив команду:

    yc container repository lifecycle-policy list --repository-name crp3cpm16edq********/ubuntu
    

    Где repository-name — имя репозитория.

    Результат:

    +----------------------+-------------+----------------------+----------+---------------------+-------------------------------+
    |          ID          |    NAME     |    REPOSITORY ID     |  STATUS  |       CREATED       |          DESCRIPTION          |
    +----------------------+-------------+----------------------+----------+---------------------+-------------------------------+
    | crp6lg1868p3******** | test-policy | crp3cpm16edq******** | DISABLED | 2020-05-28 15:05:58 | disabled lifecycle-policy for |
    |                      |             |                      |          |                     | tests                         |
    +----------------------+-------------+----------------------+----------+---------------------+-------------------------------+
    

Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.

  1. Опишите в конфигурационном файле параметры ресурсов, которые необходимо создать:

    resource "yandex_container_repository_lifecycle_policy" "my_lifecycle_policy" {
      name          = "<имя_политики>"
      status        = "<статус_политики>"
      repository_id = "<идентификатор_репозитория>"
    
      rule {
        description   = "<описание_правила>"
        untagged      = true
        tag_regexp    = ".*"
        retained_top  = 1
        expire_period = "48h"
      }
    }
    

    Где:

    • name — имя политики.
    • status — статус политики. Может принимать значения active и disabled.
    • repository_id — идентификатор репозитория.
    • rule — блок с правилом политики. Содержит следующие параметры:
      • description — описание правила.
      • untagged — если значение параметра true, правило применяется ко всем Docker-образам без тега.
      • tag_regexp — тег Docker-образа для фильтрации. Поддерживаются регулярные выражения языка Java. Например, выражение test.* позволяет получить все образы с тегами, начинающимися на test.
      • retained_top — количество Docker-образов, которые не будут удалены, даже если подходят под правила политики удаления.
      • expire_period — время, через которое Docker-образ попадает под политику удаления. Формат параметра — число и единица измерения s, m, h или d (секунды, минуты, часы или дни). expire_period должен быть кратен 24 часам.

    Более подробную информацию о параметрах ресурса yandex_container_repository_lifecycle_policy в Terraform, см. в документации провайдера.

  2. Создайте ресурсы:

    1. В терминале перейдите в папку, где вы отредактировали конфигурационный файл.

    2. Проверьте корректность конфигурационного файла с помощью команды:

      terraform validate
      

      Если конфигурация является корректной, появится сообщение:

      Success! The configuration is valid.
      
    3. Выполните команду:

      terraform plan
      

      В терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.

    4. Примените изменения конфигурации:

      terraform apply
      
    5. Подтвердите изменения: введите в терминале слово yes и нажмите Enter.

После этого в указанном репозитории будет создана политика удаления. Проверить появление политики и ее настройки можно в консоли управления или с помощью команды CLI:

 yc container repository lifecycle-policy list --registry-id <идентификатор_реестра>

Чтобы создать политику удаления, воспользуйтесь методом Create для ресурса LifecyclePolicyService.

Совет

Вы можете протестировать политику удаления, чтоб проверить, какие Docker-образы соответствуют правилам политики. Реального удаления Docker-образов при тестовом запуске не происходит.

Была ли статья полезна?

Предыдущая
Получить информацию об имеющихся политиках удаления
Следующая
Изменить политику удаления
Проект Яндекса
© 2025 ООО «Яндекс.Облако»