1. Docker System命令
docker占用了不少硬盘空间。还好Docker 1.13引入了解决方法,它提供了简单的命令来查看/清理Docker使用的磁盘空间。
[root@ecs-26ea-0002 ~]# docker system df TYPE TOTAL ACTIVE SIZE RECLAIMABLE Images 8 8 2.578GB 0B (0%) Containers 16 16 109.4MB 0B (0%) Local Volumes 69 2 2.376GB 2.309GB (97%) Build Cache
可知,Docker镜像占用了8G磁盘,Docker容器占用了16G磁盘,Docker数据卷占用了2.376GB磁盘。
docker system prune命令可以用于清理磁盘,删除关闭的容器、无用的数据卷和网络,以及dangling镜像(即无tag的镜像)。docker system prune -a命令清理得更加彻底,可以将没有容器使用Docker镜像都删掉。注意,这两个命令会把你暂时关闭的容器,以及暂时没有用到的Docker镜像都删掉了……所以使用之前一定要想清楚吶。
docker system prune -a后磁盘减少了很多,效果很好!
[root@ecs-26ea-0002 ~]# docker system prune -a WARNING! This will remove: - all stopped containers - all networks not used by at least one container - all images without at least one container associated to them - all build cache Are you sure you want to continue? [y/N]
2. 手动清理Docker镜像/容器/数据卷
对于旧版的Docker(版本1.13之前),是没有Docker System命令的,因此需要进行手动清理。这里给出几个常用的命令:
删除所有关闭的容器:
docker ps -a | grep Exit | cut -d ' ' -f 1 | xargs docker rm
删除所有dangling镜像(即无tag的镜像):
docker ps -a | grep Exit | cut -d ' ' -f 1 | xargs docker rm
删除所有dangling数据卷(即无用的Volume):
docker volume rm $(docker volume ls -qf dangling=true)
3. 限制容器的日志大小
如果服务器额日志在容器内,没有被映射出来,可以进入docker目录(/var/lib/docker/)通过du -h --max-depth=1命令去排查哪个容器的日志比较大,通过echo或者truncate命令来情况日志
比如:
truncate -s 0 /var/lib/docker/containers/xxx/1.log
echo "" > /var/lib/docker/containers/xxx/1.log
当然,这个命令只是临时有作用,日志文件迟早又会涨回来。要从根本上解决问题,需要限制Nginx容器的日志文件大小。这个可以通过配置日志的max-size来实现,下面是Nginx容器的docker-compose配置文件:
nginx: image: nginx:1.12.1 restart: always logging: driver: "json-file" options: max-size: "5g"
注:以上所有操作如果磁盘没有释放,可尝试下重启docker!
转载请注明:梦绘设计 » 虚拟化 » 如何清理Docker占用的磁盘空间
版权声明
本站《作品展示》类文章均为原创,转载必须注明出处,技术分享类文章部分来源于网络,版权归原作者所有,若侵权请留言。