Как удалить вложенное изображение в реестре Google Container

Возможно ли удалить вложенное изображение из реестра Google Container?

Я имею в виду без напрямую обращаться к директории Google Cloud Storage.

Спасибо!

Ответы

Ответ 1

Как объяснено здесь вы можете удалить изображение из реестра Google Container со следующей командой gcloud:

gcloud container images delete IMAGE_NAMES [IMAGE_NAMES …] [GLOBAL-FLAG …]

Ответ 2

С текущим пользовательским интерфейсом и его реализацией вы можете удалять только теги, основные изображения не будут удалены.

Если это изображение 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)

Ответ 3

Теперь, когда Google Container Registry перенесен на v2, вы можете:

  • Удалить теги (через веб-интерфейс Google Cloud Platform, который в настоящее время не знает метода CLI, может быть позже API API контейнера Google будет поддерживать его, или Docker Registry).
  • Удалите манифесты, которые фактически удалят файлы и свободное пространство в вашем хранилище (используйте, например, Виртуальная оболочка 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, чтобы отобразить все изображения и запустить приведенное выше на всех изображениях, чтобы упростить процесс.

Update

Пользовательский интерфейс Google Cloud Web теперь позволяет удалять изображения (см. fooobar.com/questions/384219/...)

Ответ 4

Я открыл билет в Google по этому же вопросу, и они ответили, что в настоящее время это невозможно, но чтобы оставаться в курсе, потому что они планируют добавить его в пользовательский интерфейс в ближайшее время.

Тем временем вы должны использовать браузер хранилища, чтобы удалить все, что вы хотите удалить.