公司后端采用的微服务架构,所以特点就是服务特别多,通过jenkins打包项目后,使用harbor作为容器进行项目部署,一段时间后用jenkins打包项目失败了,经过排查就是磁盘空间不够了,发现磁盘空间主要就是被harbor的镜像占用完了,因为我们每次打包都会往私服推送镜像,但是之前同名镜像也不会被覆盖,依然会存在,所以久而久之就会占用很多磁盘,并且这些很久之前推送到私服的镜像也不会被使用了,所以我们需要清除harbor中那些无用的镜像,释放磁盘。
开始清理
我们也在网上看过很多清理harbor的文章,发现很多都不生效,没有真实清理磁盘:
-
du -sh * ,查看私服的docker磁盘情况
-
找到harbor的安装目录,编辑 其目录下的common/config/registry/config.yml文件,注释掉图中的auth配置;
-
在harbor安装目录下,修改 docker-compose.yml 文件,修改此文件的目的是把registry port端口暴露出来
- 重启harbor,使配置生效
docker-compose down
docker-compose up -d ; - 清理已删除未使用的清单
docker run --network=“host” -it -v /data/registry:/registry -e REGISTRY_URL=http://127.0.0.1:5000 mortensrasmussen/docker-registry-manifest-cleanup:1.1.2beta; - 清理以删除现在不再与清单关联的blob
docker run -it --name gc --rm --volumes-from registry vmware/registry-photon:v2.6.2-v1.4.0 garbage-collect /etc/registry/config.yml
; - 最后将第二步、第三步的配置改回去,重启harber,通过命令du -sh * ,查看磁盘使用已经变少了;