Хранилище репозитория docker Bintray

#bintray #jfrog

#bintray #jfrog

Вопрос:

В Bintray я обнаружил, что у меня есть частный репозиторий docker, занимающий довольно много места:

Использование учетной записи репозиторием

Затем я приступил к ведению домашнего хозяйства и сохранил только последние 3 тега всех имеющихся у меня изображений. Однако это не очень помогло. Хранилище вообще не изменилось после удаления всех этих старых тегов.

Я получил эту конечную точку API здесь: https://bintray.com/docs/api/#_get_package_files чтобы получить оценку размера файлов пакета:

 for img in $(cat images) ; do curl -s -XGET -u "user:pass" https://bintray.com/api/v1/packages/my-org/internal-docker/$img/files | python -m json.tool | jq '.[] | .size' | awk '{ sum  = $1 } END { print sum }' ; done
  

Суммируя все это, я получаю 63723101568 байт, 60 ГБ.

Есть идеи, где находятся остальные 310 ГБ?

Обратите внимание, что, даже если бы 3 тега полностью отличались друг от друга, я бы получил в худшем случае в 3 раза больше этой цифры, то есть 180 ГБ. Но 375 ГБ все еще там.

Комментарии:

1. Также использование POST /usage/package_usage/:subject/:repo/:image_name и захват storage_bytes дает то же самое.

Ответ №1:

Откуда вы получаете массив «изображений»?

Выполняется свертка не для всего списка, а для отдельных файлов.

Возможно, ваш список включал не все изображения в этом репозитории.

Убедитесь, что вы также обошли все вложенные папки для изображений.

Комментарии:

1. curl -ns -u user:pass https://mycompany-docker-internal-docker.bintray.io/v2/_catalog | python -m json.tool | jq '.repositories | .[]' | tr -d '"' | tr '/' ':' > image это список изображений, и он соответствует номеру, который можно увидеть в Интернете. Конечная files точка предоставляет мне все файлы всех слоев docker и их размеры, которые я затем суммирую.

2. Когда я запускаю приведенную выше команду, я получаю список репозиториев, а не изображений. Я вижу, что вы также ищете его с помощью своей команды jq ‘.repositories’, которая указывает, что вы извлекаете эти данные из тега репозиториев. Это не список всех изображений в репозитории docker. Таким образом, ваши исходные данные неверны, а размеры файлов неверны. Сначала меня это тоже смутило, но когда я понял, что во многих репозиториях есть изображения с одинаковыми именами, вот почему вы получили только частичные данные.

3. Я думаю, что bintray просто отображает концепцию репозиториев для изображений docker, где каждое изображение потенциально может иметь много пакетов (тегов). Если я использую curl -ns -u user:pass https://bintray.com/api/v1/repos/mycompany/internal-docker/packages | jq '.[] | .name' , я получаю еще меньше «репозиториев», тогда как другая команда соответствует тому же номеру, который я вижу в WebGUI (все мои изображения docker).

Ответ №2:

Через некоторое время что-то изменилось во внутреннем хранилище

Я спросил об их поддержке (вы должны нажать Feedback при входе в систему в Bintary), и они проверяют, велось ли какое-либо домашнее хозяйство или только после того, как я пожаловался им, что что-то было сделано.

Я обновлю, если услышу от них больше.