Политика автоматического удаления Docker-образов
Политика удаления Docker-образов позволяет задать правила, в соответствии с которыми Docker-образы будут удаляться автоматически.
Задать политику удаления можно с помощью интерфейса командной строки Yandex Cloud CLI.
Важно
Задать политику удаления можно только для репозитория. Политика применяется к Docker-образам, имена которых в точности совпадают с именем репозитория. Совпадение по префиксу не поддерживается. Нельзя задать политику для группы репозиториев, реестра, каталога или облака.
Статусы политики удаления
Политика удаления может находиться в следующих статусах:
ACTIVE
— политика активна и регулярно удаляет Docker-образы по установленным правилам.DISABLED
— политика выключена и не удаляет Docker-образы в репозитории. Политики в этом статусе можно использовать для подготовки и тестирования правил.
Примечание
Политика по умолчанию создается в статусе DISABLED
. Как активировать политику, читайте в разделе Изменить статус политики удаления.
У репозитория может быть только одна активная политика и несколько выключенных. Активную политику можно выключить в любой момент.
Чтобы проверить, какие Docker-образы будут удалены в соответствии с правилами активной политики, вы можете сделать тестовые запуски (dry run).
Правила политики удаления
Перед удалением Docker-образы сначала фильтруются по тегам, а затем проверяются на соответствие условиям политики удаления. Если образ подпадает одновременно под несколько правил, то автоматически происходит разрешение конфликтов правил.
Важно
Для правила необходимо указать хотя бы один фильтр по тегу и задать хотя бы одно условие удаления.
При создании политики удаления, правила можно задать в виде отдельного файла в формате JSON. Для настройки правил политик удаления используются следующие параметры:
- Фильтрация Docker-образа по тегам:
-
tag_regexp
— тег для указания фильтра в виде регулярного выражения.Примеры использования
tag_regexp
:.*
— все образы с тегами.prefix.*
— образы с тегами, которые начинаются наprefix
.
-
untagged
— тег для применения правила к Docker-образам без тегов.
-
- Условия для удаления Docker-образов:
expire_period
— период времени, который должен пройти с момента создания Docker-образа, чтобы он подходил для автоматического удаления. Период должен быть кратен 24 часам.retained_top
— количество Docker-образов (подпадающих под заданный фильтр по тегам), которое необходимо оставить, даже еслиexpire_period
уже истек.
Пример JSON-файла с правилами
Правило Test
удаляет все образы, которые соответствуют следующим условиям:
- Тег начинается с
test
. - Старше 80 дней.
При этом правило оставит 20 образов.
Правило Untagged
удаляет все образы, которые соответствуют следующим условиям:
- Без тегов.
- Старше 48 часов.
[
{
"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-образов, которые не будут удалены, даже если подходят по правилу.
Разрешение конфликтов правил
- Если Docker-образ, отфильтрованный по тегу, подпадает только под одно правило для удаления, он удаляется в соответствии с настройками этого правила.
- Если Docker-образ, отфильтрованный по тегу, подпадает под несколько конфликтующих правил, он будет удален, только если этого требуют все правила. Если есть хотя бы одно правило, по которому Docker-образ не должен быть удален, он останется.