[Документация Yandex Cloud](../../index.md) > [Yandex Container Registry](../index.md) > [Концепции](index.md) > Политика автоматического удаления Docker-образов

# Политика автоматического удаления Docker-образов

Политика удаления [Docker-образов](docker-image.md) позволяет задать [правила](#lifecycle-rules), в соответствии с которыми Docker-образы будут удаляться автоматически.

Как задать правила, читайте в разделе [Создать политику удаления](../operations/lifecycle-policy/lifecycle-policy-create.md).

{% note warning %}

Задать политику удаления можно только для [репозитория](repository.md). Политика применяется к Docker-образам, имена которых в точности совпадают с именем репозитория. Совпадение по префиксу не поддерживается. Нельзя задать политику для группы репозиториев, [реестра](registry.md), [каталога](../../resource-manager/concepts/resources-hierarchy.md#folder) или [облака](../../resource-manager/concepts/resources-hierarchy.md#cloud).

{% endnote %}

## Статусы политики удаления {#status}

Политика удаления может находиться в следующих статусах:
* `ACTIVE` — политика активна и регулярно удаляет Docker-образы по установленным правилам.
* `DISABLED` — политика выключена и не удаляет Docker-образы в репозитории. Политики в этом статусе можно использовать для подготовки и тестирования правил.

{% note info %}

Политика по умолчанию создается в статусе `DISABLED`. Как активировать политику, читайте в разделе [Изменить статус политики удаления](../operations/lifecycle-policy/lifecycle-policy-update.md#update-status).

{% endnote %}

У репозитория может быть только одна активная политика и несколько выключенных. Активную политику можно выключить в любой момент.

Чтобы проверить, какие Docker-образы будут удалены в соответствии с правилами активной политики, вы можете сделать [тестовые запуски (dry run)](../operations/lifecycle-policy/lifecycle-policy-dry-run.md).

## Правила политики удаления {#lifecycle-rules}

Перед удалением Docker-образы сначала фильтруются по тегам, а затем проверяются на соответствие условиям политики удаления. Если образ подпадает одновременно под несколько правил, то автоматически происходит [разрешение конфликтов правил](#resolve).

{% note warning %}

Для правила необходимо указать хотя бы один фильтр по тегу и задать хотя бы одно условие удаления.

{% endnote %}

При [создании политики удаления](../operations/lifecycle-policy/lifecycle-policy-create.md), правила можно задать в виде отдельного файла в формате JSON. Для настройки правил политик удаления используются следующие параметры:
1. Фильтрация Docker-образа по тегам:
   * `tag_regexp` — тег для указания фильтра в виде регулярного выражения.

     Примеры использования `tag_regexp`:
     * `.*` — все образы с тегами.
     * `prefix.*` — образы с тегами, которые начинаются на `prefix`.
   * `untagged` — тег для применения правила к Docker-образам без тегов.
1. Условия для удаления Docker-образов:
   * `expire_period` — период времени, который должен пройти с момента создания Docker-образа, чтобы он подходил для автоматического удаления. Период должен быть кратен 24 часам.
   * `retained_top` — количество Docker-образов (подпадающих под заданный фильтр по тегам), которое необходимо оставить, даже если `expire_period` уже истек.

#### Пример JSON-файла с правилами {#example}

Правило `Test` удаляет все образы, которые соответствуют следующим условиям:
* Тег начинается с `test`.
* Старше 80 дней.

При этом правило оставит 20 образов.

Правило `Untagged` удаляет все образы, которые соответствуют следующим условиям:
* Без тегов.
* Старше 48 часов.

```json
[
  {
    "description": "Test",
    "tag_regexp": "test.*",
    "expire_period": "80d",
    "retained_top": 20
  },
  {
    "description": "Untagged",
    "untagged": true,
    "expire_period": "48h"
  }
]
```

Где:
* `description` — описание правила политики.
* `tag_regexp` — тег Docker-образа для фильтрации. Регулярное выражение `test.*` для `tag_regexp` позволяет получить все образы с тегами, начинающимися на `test`.
* `untagged` — флаг для применения правила к Docker-образам без тегов.
* `expire_period` — время, через которое Docker-образ может попадать под политику удаления. Формат параметра — число и единица измерения `s`, `m`, `h` или `d` (секунды, минуты, часы или дни). `expire_period` должен быть кратен 24 часам.
* `retained_top` — количество Docker-образов, которые не будут удалены, даже если подходят по правилу.

## Разрешение конфликтов правил {#resolve}

* Если Docker-образ, отфильтрованный по тегу, подпадает только под одно правило для удаления, он удаляется в соответствии с настройками этого правила.
* Если Docker-образ, отфильтрованный по тегу, подпадает под несколько конфликтующих правил, он будет удален, только если этого требуют все правила. Если есть хотя бы одно правило, по которому Docker-образ не должен быть удален, он останется.

## Примеры использования {#examples}

* [Хранение Docker-образов из проектов Yandex Managed Service for GitLab](../tutorials/image-storage.md)