Last active
March 28, 2020 09:37
-
-
Save vglebov/71fd794d5901e1492848cd281dc445fb to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env bash | |
REPO_URL='http://registry.example.com:5000/v2' | |
function docker-repo-catalog () { | |
curl ${REPO_URL}/_catalog 2>/dev/null \ | |
-H 'Accept: application/vnd.docker.distribution.manifest.v2+json' | | |
jq -j ".repositories" | |
} | |
function docker-repo-tags-list () { | |
curl "${REPO_URL}/$1/tags/list" 2>/dev/null \ | |
-H 'Accept: application/vnd.docker.distribution.manifest.v2+json' | | |
jq -j ".tags" | |
} | |
function docker-repo-image-manifest-head () { | |
curl --head "${REPO_URL}/$1/manifests/$2" 2>/dev/null \ | |
-H 'Accept: application/vnd.docker.distribution.manifest.v2+json' | |
} | |
function docker-repo-image-manifest-get () { | |
curl -X GET "${REPO_URL}/$1/manifests/$2" 2>/dev/null \ | |
-H 'Accept: application/vnd.docker.distribution.manifest.v2+json' | |
} | |
function docker-repo-delete-image () { | |
printf "docker-repo-delete-image ${1}:${2} ${3}" | |
uri="${REPO_URL}/$1/manifests/$3" | |
curl -X DELETE "${uri}" 2>/dev/null \ | |
-H 'Accept: application/vnd.docker.distribution.manifest.v2+json' | |
} | |
function docker-repo-delete-repo () { | |
uri="${REPO_URL}/repositories/$1" | |
curl -X DELETE "${uri}" 2>/dev/null \ | |
-H 'Accept: application/vnd.docker.distribution.manifest.v2+json' | |
} | |
function docker-repo-delete-layer () { | |
uri="${REPO_URL}/$1/blobs/$2" | |
curl -X DELETE "${uri}" \ | |
-H 'Accept: application/vnd.docker.distribution.manifest.v2+json' | |
} | |
function get_digest_from_manifest_head () { | |
docker-repo-image-manifest-head $1 $2 | grep 'Docker-Content-Digest' | awk '{print $2}' | sed 's/\r//g' | |
} | |
function delete_all () { | |
repositories=$(docker-repo-catalog | grep "$1" | sed 's/[ ",]//g') | |
for repository in ${repositories}; do | |
# docker-repo-tags-list ${repository} | |
tags=$(docker-repo-tags-list ${repository} | sed 's/[\[\] ",]//g') | |
for tag in ${tags}; do | |
didgest=$(get_digest_from_manifest_head "${repository}" "${tag}") | |
docker-repo-delete-image "${repository}" "${tag}" "${didgest}" | |
done | |
# FIXME docker-repo-delete-repo выдает 404 ошибку | |
docker-repo-delete-repo ${repository} | |
done | |
} | |
docker-repo-catalog | |
delete_all ".*" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment