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

时间:2017-05-26 20:24:27

标签: docker

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

5 个答案:

答案 0 :(得分:6)

使用Docker Hub API,如下所述: https://docs.docker.com/v1.7/reference/api/docker-io_api/#delete-a-user-repository

我刚用curl测试了一个测试图片的删除:

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

分别用Docker Hub上的用户和密码替换$user$pass;并使用图片名称(在我的情况下为$namespace)替换$user(在我的情况下,它与$reponame相同)和test

答案 1 :(得分:1)

对于任何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' } 

答案 2 :(得分:0)

有可能。要获取快捷方式,请在Chrome中打开开发工具,然后转到网络标签。从Docker Hub手动删除标签。您会在开发工具的“网络”标签上看到一个请求,该请求转到https://cloud.docker.com/v2/repositories/ / tags /。只需右键单击该请求,“复制”,“复制为卷曲”即可。它应该看起来像这样...

卷曲“ https://cloud.docker.com/v2/repositories/ / tags //” -X DELETE -H'编译指示:无高速缓存'-H'来源:https://cloud.docker.com'-H'接受编码:gzip,deflate,br '-H'接受语言:en-US,en; q = 0.9'-H'用户代理:Mozilla / 5.0(Macintosh; Intel Mac OS X 10_13_6)AppleWebKit / 537.36(KHTML,如Gecko)Chrome / 72.0。 3626.121 Safari / 537.36'-H'接受:应用程序/ json'-H'缓存控制:无缓存'-H'推荐人:https://cloud.docker.com/user/repository/registry-1.docker.io/reponame/tags'-H'Cookie:'--compressed

答案 3 :(得分:0)

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/

这将删除一个标签...

就我而言,我有微服务,然后REPOSITORY =微服务名称...

如果要删除所有较旧的图像,可以对此进行迭代。...

答案 4 :(得分:0)

您可以通过使用<TAG>和REST API从Docker Hub网站<REPO>到Docker Hub网站(位于curl)上删除任何https://hub.docker.com/v2/注册表(位于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>/

HUB_TOKEN是使用Authorization HTTP标头传递的JSON Web令牌,可以通过将您的凭据以JSON格式发布到/v2/users/login/ Docker Hub端点来获得:

HUB_TOKEN=$(curl -s -H "Content-Type: application/json" -X POST -d '{"username": "'${HUB_USERNAME}'", "password": "'${HUB_PASSWORD}'"}' https://hub.docker.com/v2/users/login/ | jq -r .token)
echo $HUB_TOKEN