原文链接地址
今天突然发现跑服务器的磁盘满了。
记录下进入服务查看到Docker-Overlay2磁盘空间的清理方法:清理Docker的数据卷volumes
Docker在长时间使用的情况下,经常需要删除旧的容器并创建新的容器,时间长了Docker 的数据卷 volumes 会产生了很多的僵尸文件,这些文件大都是未绑定容器的目录。
1.查看磁盘使用
df -h
- 1
发现是目录 /data/docker/overlay2 下占满了磁盘,看看里面是什么。
2.查看Docker数据卷及磁盘使用情况
查询Docker的磁盘使用情况:
docker system df
'''
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 2 1 20.48GB 9.64GB (47%)
Containers 1 1 10.46GB 0B (0%)
Local Volumes 20 0 135.35GB 135.35GB (100%)
Build Cache 0 0 0B 0B
'''
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
上述信息可以看出:
Docker 镜像占用了 20.48GB 磁盘,
Docker 容器占用了 10.46GB 磁盘,
Docker 数据卷占用了 135.35GB 磁盘。
查询僵尸文件:
官方提供用于 查询僵尸文件
的命令:
docker volume ls -qf dangling=true
- 1
3.Docker 删除无用数据卷
手动删除命令
# 删除所有dangling数据卷(即无用的Volume,僵尸文件)
docker volume rm $(docker volume ls -qf dangling=true)# 删除所有dangling镜像(即无tag的镜像)
docker rmi $(docker images | grep "^<none>" | awk "{print $3}")# 删除所有关闭的容器
docker ps -a | grep Exit | cut -d ' ' -f 1 | xargs docker rm
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
删除关闭的容器、无用的数据卷和网络,以及dangling镜像(即无tag的镜像)
注意,所有关闭的容器都会被删除,请核查是否存在关闭运行但是需要保留的容器
# 删除关闭的容器、无用的数据卷和网络
docker system prune
# 删除更彻底,可以将没有容器使用Docker镜像都删掉
docker system prune -a
- 1
- 2
- 3
- 4
重启Docker
使用上面几个方法的命令可以有效清理 Docker 运行所产生的无用文件,且无需重启 Docker 即可生效
如果遇到Docker 无法清理一些无用目录,重启 Docker 可以解决这个问题