docker - 在 Azure Pipelines 中每次成功构建时将图像推送到集线器时,如何管理 Docker Hub 上的图像?
问题描述
我正在使用基于微服务的架构,并且为每个微服务构建了单独的管道。我使用 Docker BuildandPush 作为 Azure 构建管道中的一个阶段,并且在每次成功构建时,图像都会被推送到 DockerHub。
现在,我主要关心的是随着时间的推移,我的 DockerHub 注册表会填充冗余图像,那么如何通过任何管道阶段或脚本自动清除这些冗余图像?
解决方案
您可以通过注册表 REST API 删除图像。为此,您需要知道 docker 映像名称和要删除的摘要。一个图像可以通过它的name
和从注册表中删除reference
,reference
必须是摘要,否则删除将失败。
调用休息 API:
DELETE http://registryhost:reigstryport/v2/<docker_image_name>/manifests/<reference>
例如:
curl -v -X DELETE https://my.docker.registry.com:5000/v2/mytestdockerrepo/manifests/sha256:66675d81b9bd5eafc105832b78abb91cab975bbcf028ca4bce4afe73f66914ee
您应该获得 202 Accepted 成功调用。如果图像已被删除或不存在,则会发出 404 Not Found 响应。
注意从 2.3 或更高版本的注册表中删除清单时,必须在 HEAD 或 GET-ing 清单时使用以下标头以获取要删除的正确摘要:
Accept: application/vnd.docker.distribution.manifest.v2+json
有关详细信息,请参阅此文档。
推荐阅读
- git - 如何创建具有自定义差异的 git 分支到主分支?
- python - 根据 SEMI-known Label 在堆积条形图中设置颜色
- .net - 在 linux 上运行的 Jenkins 可以构建和部署标准的 .Net 框架代码吗?
- python - 创建一个csv文件,Excel在打开时不会改变数据
- audio - 在ffmpeg中将附加音频文件与视频(+音频)混合
- scala - Spark Window - 如何比较数据帧的第一行和第 n 行?
- angular - 需要针对 Azure AD 的简单编程身份验证
- python - docker-compose up 后 pip 无法安装需求
- angular - 对 data-tippy-content 使用 Angular 的插值
- java - 无法删除实体,必须先删除登录配置文件