使用 Docker 运行业务一段时间后,可能会出现宿主节点的磁盘容量占用高,导致宿主机磁盘空间不足等异常,对业务造成影响。本文对 Docker 的空间占用进行汇总分析,以及对应的清理操作进行说明,希望能帮到大家~,一般来说,docker包括镜像(image)、容器(container)和数据卷(volumn)三部分,日常遇到的docker空间占用问题,基本也是从这三方面入手。典型的场景有:,通过 docker system df命令,查看Images镜像占用的空间大小,可以看到总的镜像数以及在用的镜像数。可以通过以下命令进行清理,从而达到释放空间占用的作用,容器镜像数较多导致的空间占用是最常见也最容易处理的场景,除通过docker system prune清理外,也可通过docker rmi的命令进行清理。除此之外 ,还有常见的空间占用场景,如json.log文件过大。当容器运行一段时间后,容器的控制台日志输出过大的时候,会导致一个以容器ID-json命名的Log文件,持续增大,一般是在/var/lib/docker/containers/目录下,可以通过如下命令查看json.log占用,解决方案有3种,简单处理:, 运行服务时指定json log大小及数量, 全局配置,Local Volumnes占用空间大,相对来说比较少遇到的一种场景,像镜像和json.log占用的情况,比较常见。,从命令可以看出,Local Volumnes占用超过60GB,可释放空间只有232MB,因此通过命令:docker system prune清理也只能释放232MB的空间占用。
解决方案
思路:
查看Local Volumes占用明细->查找关联的容器ID->清理对应容器->完成空间占用清理,可以看出磁盘占用主要是:fc52cd72fa393c8cbe92b90de2d5e555d5a7cee725871ff729a1941fadfe942d,因此,要查看此卷相关联的容器ID,在日常使用中,安装docker后做好优化配置工作,如配置json log大小及文件限制,定期清理无用的容器和镜像,可以减少docker 空间占用导致宿主机磁盘空间不够导致的各种问题。当遇到以上措施无法处理的情况的时候,要灵活使用docker system df -v的命令进行故障排查分析。希望这个能帮到各位,有用就点个关注和收藏吧~