目录
修改Docker Registry配置
配置开启删除功能:config.yml
version: 0.1 |
主要在storage下增加delete开启状态 enabled:true
具体配置参考官方配置详情:https://github.com/docker/distribution/blob/master/docs/configuration.md
使用Registry V2 RestfulAPI 删除镜像
镜像删除之前需要获取镜像的digest值
- 获取镜像digest值
curl --cacert /etc/docker/certs.d/192.168.0.34\:5000/ca.crt -H "Accept:application/vnd.docker.distribution.manifest.v2+json" https://192.168.0.34:5000/v2/messer/manifests/1.0 |
注意:
我们配置了证书,所以必须要添加证书 –cacert使用crt证书
在获取镜像digest值时必须要指定Header “Accept:application/vnd.docker.distribution.manifest.v2+json” 否则无法获取
RESTful API格式:
/v2/<镜像名称>/manifests/<tag> |
具体Docker registry V2 RESTful API查看:https://docs.docker.com/registry/spec/api/
- 通过上面获取到的具体返回信息
{ |
我们要的就是"digest": "sha256:c8043677c5d750e0904298c29825d1da8389a1ea2e2564e076ed54a023ece056"
这个值
- 通过delete接口删除镜像
curl --cacert /etc/docker/certs.d/192.168.0.34\:5000/ca.crt -X DELETE https://192.168.0.34:5000/v2/messer/manifests/sha256:c8043677c5d750e0904298c29825d1da8389a1ea2e2564e076ed54a023ece056 |
返回不是404 就是删除了
具体Docker registry V2 RESTful API查看:https://docs.docker.com/registry/spec/api/
Docker Registry GC回收空间
但是实际上并没有删除,只是删除了 Registry 的索引。实际文件并没有删除。
最后还需要执行镜像的垃圾回收:
registry garbage-collect /etc/docker/registry/config.yml |
上面需要进入到registry容器里面去执行,/etc/docker/registry/config.yml为配置文件路径
gc完后会看到被gc的信息例如:
root@83d6f5acc9f5:/# /bin/registry garbage-collect /etc/docker/registry/config.yml |
如果没有任何输出证明没有回收到任何东西。
使用UI管理Docker Registry
上面是通过Docker registry V2 RESTful API的方式删除,也可以通过UI工具删除,目前Docker registry UI工具也比较多这里介绍两个, docker-registry-frontend和hyper/docker-registry-web。
docker-registry-frontend
我们使用的是 docker-registry-frontend但是他的功能比较弱没有删除的操作,只能浏览,虽然他的说明里面有说明添加了删除功能但是发布的版本中并没有合并删除功能的代码:
官方hub信息:https://hub.docker.com/r/konradkleine/docker-registry-frontend/
这个MODE_BROWSE_ONLY=false
这个配置是完全没有效果的,今天可以查看docker-registry-frontend的github issue:https://github.com/kwk/docker-registry-frontend/issues/106
hyper/docker-registry-web
这个UI虽然不是很好看,但是有删除功能
官方hub信息:https://hub.docker.com/r/hyper/docker-registry-web/
创建步骤根据官方hub上面的说明信息一步一步做就ok了,但是这个东西做的不太好速度有点慢。
界面预览:
不管是通过RESTful API还是UI删除镜像,都需要去再registry里去gc一下才能真正释放空间,如下时候gc后的效果图