如何通过命令行从docker hub中删除docker映像?

如何通过命令行从docker hub中删除docker映像?,docker,Docker,我在Jenkins管道中创建用于测试的docker映像,将其上载到docker hub并将其部署到Kubernetes。在测试过程结束时,我想从Docker hub(而不是从测试机器)删除测试映像。如何从命令行删除docker hub映像?使用docker hub API,如中所述: 我刚刚测试了使用curl删除测试图像: curl -X DELETE -u "$user:$pass" https://index.docker.io/v1/repositories/$namespace/$re

我在Jenkins管道中创建用于测试的docker映像,将其上载到docker hub并将其部署到Kubernetes。在测试过程结束时,我想从Docker hub(而不是从测试机器)删除测试映像。如何从命令行删除docker hub映像?

使用docker hub API,如中所述:

我刚刚测试了使用curl删除测试图像:

curl -X DELETE -u "$user:$pass" https://index.docker.io/v1/repositories/$namespace/$reponame/

在Docker Hub上分别用您的用户和密码替换
$user
$pass
;并将
$namespace
(在我的示例中,它与
$user
相同)和
$reponame
替换为图像名称(在我的示例中,是
test
)。

这是可能的。要获得快捷方式,请在Chrome中打开“开发工具”,转到“网络”选项卡。从Docker Hub手动删除标记。您将在dev tools的network选项卡上看到一个请求,该选项卡位于/tags/。右键点击那个请求,复制,复制为Curl。应该是这样的


curl“/tags/”-X DELETE-H'Pragma:no-cache'-H'来源:'-H'接受编码:gzip,deflate,br'-H'接受语言:en-US,en;q=0.9'-H'用户代理:Mozilla/5.0(Macintosh;英特尔Mac OS X 10_13_6)AppleWebKit/537.36(KHTML,像Gecko)Chrome/72.0.3626.121 Safari/537.36'-H'接受:应用程序/json'-H'缓存控制:无缓存'-H'引用:'-H'Cookie:'-压缩的

Dockerhub有一个REST后端,然后您可以使用它。。。它只是跳过了FE

例如:

export USERNAME=myuser
export PASSWORD=mypass
export ORGANIZATION=myorg (if it's personal, then it's your username)
export REPOSITORY=myrepo
export TAG=latest

curl -u $USERNAME:$PASSWORD -X "DELETE" https://cloud.docker.com/v2/repositories/$ORGANIZATION/$REPOSITORY/tags/$TAG/
这将删除一个标记

在我的例子中,我有微服务,然后存储库=微服务名称

如果我想删除所有较旧的图像,我可以对此进行迭代……

您可以使用
curl
和REST API从Docker Hub网站(位于
https://hub.docker.com/v2/
)而不是Docker Hub注册表(位于
Docker.io
)。因此,如果您不害怕使用未记录的API,那么目前可以这样做:

curl -i -X DELETE \
  -H "Accept: application/json" \
  -H "Authorization: JWT $HUB_TOKEN" \
  https://hub.docker.com/v2/repositories/<HUB_USERNAME>/<REPO>/tags/<TAG>/

对于任何PowerShell朋友

$params = @{username='mickey';password='minnie'}
$response = Invoke-RestMethod -Uri https://hub.docker.com/v2/users/login/ -Method POST -Body $params
$token = $response.token;

$orgName = "mickey" #organization or user name
$repoName = "disney"
$Uri = $("https://hub.docker.com/v2/repositories/$orgName/$repoName/")

Invoke-WebRequest -Method Delete -Uri $Uri -Headers @{Authorization="JWT " + $token; Accept= 'application/json' } 

可能的副本不是副本。我想使用命令行从Docker hub中删除图像。原始版本没有说明这一点。我已经找到了方法。这是我提出的最后一个python脚本:哇,真不敢相信没有docker命令行可以从注册表中删除图像。这会删除完整的图像。如何删除特定的标记?目前无法使用API删除特定的标记。禁用
403
(而不是
401未经授权的
)当我这样做时…@ThomasHirsch你能尝试删除
“${HUB_USERNAME}”和
“${HUB_PASSWORD}”中的单引号吗?更改此项后,我可以删除一个标记。@030谢谢,我同时解决了它。我只得到
{“detail”:“无效用户名/密码”}
作为响应,尽管我仔细检查了用户名和密码。@DavidParks先生您是否检查了您所在的组织是否正确?另外,检查您是否有足够的权限。。。
$params = @{username='mickey';password='minnie'}
$response = Invoke-RestMethod -Uri https://hub.docker.com/v2/users/login/ -Method POST -Body $params
$token = $response.token;

$orgName = "mickey" #organization or user name
$repoName = "disney"
$Uri = $("https://hub.docker.com/v2/repositories/$orgName/$repoName/")

Invoke-WebRequest -Method Delete -Uri $Uri -Headers @{Authorization="JWT " + $token; Accept= 'application/json' }