医疗网站建设免费,酒店网络营销推广方案,wordpress 发评论代码,建设公司加盟Docker(二十七)-Docker 清理占用的磁盘空间 https://www.cnblogs.com/zhuochong/p/10076599.htmldocker system
docker network一系列的docker 命令 感觉挺有裨益的 去年的时候还用过 一段时间不用 忘记的干干净净了. 1. docker system命令 docker system df命令#xff0c;类…Docker(二十七)-Docker 清理占用的磁盘空间 https://www.cnblogs.com/zhuochong/p/10076599.htmldocker system
docker network一系列的docker 命令 感觉挺有裨益的 去年的时候还用过 一段时间不用 忘记的干干净净了. 1. docker system命令 docker system df命令类似于Linux上的df命令用于查看Docker的磁盘使用情况: docker system dfTYPE TOTAL ACTIVE SIZE RECLAIMABLEImages 147 36 7.204GB 3.887GB (53%)Containers 37 10 104.8MB 102.6MB (97%)Local Volumes 3 3 1.421GB 0B (0%)Build Cache 0B 0B 可知Docker镜像占用了7.2GB磁盘Docker容器占用了104.8MB磁盘Docker数据卷占用了1.4GB磁盘。 docker system prune命令可以用于清理磁盘删除关闭的容器、无用的数据卷和网络以及dangling镜像(即无tag的镜像)。docker system prune -a命令清理得更加彻底可以将没有容器使用Docker镜像都删掉。注意这两个命令会把你暂时关闭的容器以及暂时没有用到的Docker镜像都删掉了…所以使用之前一定要想清楚吶。 执行docker system prune -a命令之后Docker占用的磁盘空间减少了很多 docker system dfTYPE TOTAL ACTIVE SIZE RECLAIMABLEImages 10 10 2.271GB 630.7MB (27%)Containers 10 10 2.211MB 0B (0%)Local Volumes 3 3 1.421GB 0B (0%)Build Cache 0B 0B 2. 手动清理Docker镜像/容器/数据卷 对于旧版的Docker(版本1.13之前)是没有docker system命令的因此需要进行手动清理。这里给出几个常用的命删除所有关闭的容器 docker ps -a | grep Exit | cut -d -f 1 | xargs docker rm 删除所有dangling镜像(即无tag的镜像) docker rmi $(docker images | grep ^none | awk {print $3})docker rmi $(docker images | grep ^ | awk {print $3})docker rmi $(docker images | grep none | awk {print $3}) sudo docker rmi -f $(sudo docker images -a | awk {print $3}) 删除所有dangling数据卷(即无用的volume) docker volume rm $(docker volume ls -qf danglingtrue) 3. 限制容器的日志大小 有一次当我使用1与2提到的方法清理磁盘之后发现并没有什么作用于是我进行了一系列分析。 在Ubuntu上Docker的所有相关文件包括镜像、容器等都保存在/var/lib/docker/目录中 du -hs /var/lib/docker/97G /var/lib/docker/ Docker竟然使用了将近100GB磁盘这也是够了。使用du命令继续查看可以定位到真正占用这么多磁盘的目录 92G /var/lib/docker/containers/a376aa694b22ee497f6fc9f7d15d943de91c853284f8f105ff5ad6c7ddae7a53 由docker ps可知nginx容器的ID恰好为a376aa694b22与上面的目录/var/lib/docker/containers/a376aa694b22的前缀一致 docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESa376aa694b22 192.168.59.224:5000/nginx:1.12.1 nginx -g daemon off 9 weeks ago Up 10 minutes nginx 因此nginx容器竟然占用了92GB的磁盘。进一步分析可知真正占用磁盘空间的是nginx的日志文件。那么这就不难理解了。 使用truncate命令可以将nginx容器的日志文件“清零” truncate -s 0 /var/lib/docker/containers/a376aa694b22ee497f6fc9f7d15d943de91c853284f8f105ff5ad6c7ddae7a53/*-json.log 当然这个命令只是临时有作用日志文件迟早又会涨回来。要从根本上解决问题需要限制nginx容器的日志文件大小。这个可以通过配置日志的max-size来实现下面是nginx容器的docker-compose配置文件 nginx: image: nginx:1.12.1 restart: always logging: driver: json-file options: max-size: 5g 重启nginx容器之后其日志文件的大小就被限制在5GB再也不用担心了~ 4. 重启Docker 还有当我清理了镜像、容器以及数据卷之后发现磁盘空间并没有减少。根据Docker disk usage提到过的建议我重启了Docker发现磁盘使用率从83%降到了19%。根据高手指点这应该是与内核3.13相关的BUG。 转载于:https://www.cnblogs.com/jinanxiaolaohu/p/10640304.html