IBM Cloud Private 2.1.0 のレジストリーからイメージを削除するにはどうすればよいですか? 1.2 では、UI から画像を削除できました。現在のバージョンではどのように行われますか?
質問する
987 次
3 に答える
1
CLI を介してイメージを削除するためのスクリプトを作成しました。jq
CLI が含まれているパターンに基づいて、ICP レジストリ内のイメージを削除できます。このスクリプトは、ICP マスター ノードで実行することを目的としています。スニペット、chmod +x を保存し、creds の変数を更新してお楽しみください!
呼び出しの例:
./remove-registry-image.sh label
結果:: 名前空間またはイメージにそのラベルを含むすべてのイメージを削除します
./remove-registry-image.sh namespace/image-label
結果:: にある特定のイメージ ラベルを削除します名前空間
#!/bin/bash
# ----------------------------------------------------------------------------------------------------\\
# Description:
# A basic script port to delete registry images on an ICP Cluster
# Fork of https://gist.github.com/mohamed-el-habib/26d26dddaf3dcefcc0e6bdd8a15bd681
# Reference: https://www.ibm.com/support/knowledgecenter/en/SSBS6K_2.1.0/apis/docker_registry_api.html
#
# usage ./remove-registry-image.sh filterString
#
# ./remove-registry-image.sh nameSpace/textString
#
# ----------------------------------------------------------------------------------------------------\\
set -e
##########
# Colors##
##########
Green='\x1B[0;32m'
Red='\x1B[0;31m'
Yellow='\x1B[0;33m'
Cyan='\x1B[0;36m'
no_color='\x1B[0m' # No Color
beer='\xF0\x9f\x8d\xba'
delivery='\xF0\x9F\x9A\x9A'
beers='\xF0\x9F\x8D\xBB'
eyes='\xF0\x9F\x91\x80'
cloud='\xE2\x98\x81'
crossbones='\xE2\x98\xA0'
litter='\xF0\x9F\x9A\xAE'
fail='\xE2\x9B\x94'
harpoons='\xE2\x87\x8C'
tools='\xE2\x9A\x92'
present='\xF0\x9F\x8E\x81'
#############
export ICPUSER=admin
export ICPPW=admin
# Get the variables
clear
echo -e "${tools} Welcome to the delete registry script for an IBM Cloud Private Cluster v2 Docker Registry"
if [ "${OS}" == "rhel" ]; then
sudo yum install epel-release -y
sudo yum install jq -y
else
sudo apt-get -qq install jq -y
fi
dockerRegistry='mycluster.icp'
dockerRegistryPort='8500'
user="$ICPUSER:$ICPPW"
imagesFilter="$1"
# get the list of images names that match the filter
CATALOG_TOKEN=$(curl --cacert $HOME/.kube/kubecfg.crt -u ${user} -ks "https://${dockerRegistry}:8443/image-manager/api/v1/auth/token?service=token-service&scope=registry:catalog:*" | jq -r '.token')
images=$(curl --cacert $HOME/.kube/kubecfg.crt -ks -H "Authorization: Bearer ${CATALOG_TOKEN}" "https://${dockerRegistry}:${dockerRegistryPort}/v2/_catalog" | jq -r '.repositories[]? | select(. | contains("'${imagesFilter}'")) ')
for image in $images ; do
# get the list of tags for each image
TAG_TOKEN=$(curl --cacert $HOME/.kube/kubecfg.crt -u ${user} -ks "https://${dockerRegistry}:8443/image-manager/api/v1/auth/token?service=token-service&scope=repository:${image}:*" | jq -r '.token')
tags=$(curl --cacert $HOME/.kube/kubecfg.crt -ks -H "Authorization: Bearer ${TAG_TOKEN}" "https://${dockerRegistry}:${dockerRegistryPort}/v2/${image}/tags/list" | jq -r .tags[]?)
for tag in $tags ; do
echo "${image}:${tag}"
# get the digest of the image:tag
digest=$(curl -H "Accept: application/vnd.docker.distribution.manifest.v2+json" -v --cacert $HOME/.kube/kubecfg.crt -ks -H "Authorization: Bearer ${TAG_TOKEN}" "https://${dockerRegistry}:${dockerRegistryPort}/v2/${image}/manifests/${tag}" 2>&1 | grep -e "Docker-Content-Digest:*" | awk '{ sub(/\r/,"",$3) ; print $3 }')
if [ -z $digest ] ; then
echo "${image}:${tag} not found"
else
echo -e "${litter} Deleting ${image}:${tag}:${digest}"
curl -XDELETE -w "[%{http_code}]\n" --cacert $HOME/.kube/kubecfg.crt -ks -H "Authorization: Bearer ${TAG_TOKEN}" "https://${dockerRegistry}:${dockerRegistryPort}/v2/${image}/manifests/${digest}"
fi
echo "...."
done
done
if [ -n "${images}" ]; then
echo -e "${fail} No images matching provided filterString (${imagesFilter}) found"
else
echo -e "${beers} Congrats! All images matching chosen filterString (${imagesFilter}) have been deleted"
fi
于 2018-03-12T22:44:44.590 に答える