Ответ 1
Как объяснено здесь вы можете удалить изображение из реестра Google Container со следующей командой gcloud:
gcloud container images delete IMAGE_NAMES [IMAGE_NAMES …] [GLOBAL-FLAG …]
Возможно ли удалить вложенное изображение из реестра Google Container?
Я имею в виду без напрямую обращаться к директории Google Cloud Storage.
Спасибо!
Как объяснено здесь вы можете удалить изображение из реестра Google Container со следующей командой gcloud:
gcloud container images delete IMAGE_NAMES [IMAGE_NAMES …] [GLOBAL-FLAG …]
С текущим пользовательским интерфейсом и его реализацией вы можете удалять только теги, основные изображения не будут удалены.
Если это изображение Docker V2, из командной строки вы можете удалить изображение с помощью Docker Registry API, сначала удалив теги, а затем удалив манифест. Подробнее об этом в конце ответа.
Если это изображение Docker V1, для удаления изображения нет "докеров", но вы можете удалить изображение в GCS.
Мы реализуем новые функции, которые позволят вам удалять теги V2 и изображения.
Сведения об удалении изображений/тегов V2 из командной строки с использованием Docker Registry V2 API:
export REGISTRY=gcr.io
export REPOSITORY=foo/bar
# Next line will dump all the manifests and the tags pointing to the manifests:
curl -u _token:$(gcloud auth print-access-token) https://$REGISTRY/v2/$REPOSITORY/tags/list 2>/dev/null | python -mjson.tool
# You will see output like this:
{
...
"manifest": {
"sha256:2aa676...": {},
"sha256:95de3c...": {
"tag": [
"centos7.0.1406",
"centos8.8",
...
]
},
...
},
"name": "foo/bar",
"tags": [
"centos7.0.1406",
"centos8.8",
...
]
}
# Find the image/manifest you want to delete, first delete all its tags,
# then delete the manifest, by using:
curl -X DELETE -u _token:$(gcloud auth print-access-token) https://$REGISTRY/v2/$REPOSITORY/manifests/xxxx
# where xxxx is the tag or manifest you want to delete
# (yes, you delete tag and manifest using the same REST api)
Теперь, когда Google Container Registry перенесен на v2, вы можете:
Удалите манифесты, которые фактически удалят файлы и свободное пространство в вашем хранилище (используйте, например, Виртуальная оболочка Google):
$ export REGISTRY=gcr.io
$ export REPOSITORY=my-registry-name/my-image-name
$ export TOKEN=$(gcloud auth print-access-token)
$ curl -u _token:$TOKEN https://$REGISTRY/v2/$REPOSITORY/tags/list 2>/dev/null | python -m json.tool | grep -Po 'sha256:[^"]*' | xargs -i sh -c "curl -X DELETE -u _token:$TOKEN https://$REGISTRY/v2/$REPOSITORY/manifests/{} 2>/dev/null | python -m json.tool"
Примечание. Он не будет удалять манифест, который используется тегами.
Примечание 2: После обновления Docker Registry до версии v.1.1.1 можно вызвать GET /v2/_catalog
, чтобы отобразить все изображения и запустить приведенное выше на всех изображениях, чтобы упростить процесс.
Пользовательский интерфейс Google Cloud Web теперь позволяет удалять изображения (см. fooobar.com/questions/384219/...)
Я открыл билет в Google по этому же вопросу, и они ответили, что в настоящее время это невозможно, но чтобы оставаться в курсе, потому что они планируют добавить его в пользовательский интерфейс в ближайшее время.
Тем временем вы должны использовать браузер хранилища, чтобы удалить все, что вы хотите удалить.
Проверьте, как удалить изображения здесь.
Использование CLI
gcloud container images delete [HOSTNAME]/[PROJECT-ID]/[IMAGE]
https://cloud.google.com/container-registry/docs/managing#deleting_images