Docker清理磁盘空间
探查命令
我们需要查看Docker系统的磁盘占用情况。可以使用以下命令:
- docker system df:查看整个系统的磁盘使用情况
- docker container ls -a:查看所有容器的磁盘使用情况
- docker image ls:查看所有镜像的磁盘使用情况
- du -sh /var/lib/docker/:查看整个Docker目录的磁盘使用情况
Docker命令常规清除
接下来,我们可以使用Docker命令来清除停止的容器、无用镜像、缓存、挂载数据、无用的容器、数据卷和网络,以及清除Build缓存。具体的命令如下:
- 清除停止的容器:docker rm $(docker ps -q -f status=exited)
- 清除无用镜像:docker rmi $(docker images -q -f dangling=true)
- 清除缓存:docker builder prune
- 清除挂载数据:docker run --rm -v /:/mnt -w /mnt busybox find /mnt -type f -size +50M -delete
- 清除无用的容器:docker container rm $(docker container ls -aq)
- 清除数据卷:docker volume rm $(docker volume ls -qf dangling=true)
- 清除网络:docker network rm $(docker network ls -q)
- 清除Build缓存:docker builder prune
清除日志文件
我们还可以使用脚本来清除日志文件。以下是两个脚本示例:
- 清除/var/lib/docker/containers目录下的容器日志文件:find /var/lib/docker/containers -type f -name '*.log' -delete
- 清除/var/lib/docker/overlay2目录下的日志文件:find /var/lib/docker/overlay2 -type f -name '*.log' -delete
集大成者清理脚本
我们提供了一个综合脚本,结合了上述清除命令和日志文件的清理,以自动化清理过程。具体步骤如下:
1. 创建一个新的shell脚本文件,例如clean_docker.sh。
#!/bin/bash
sudo docker image prune -f
sudo docker builder prune -f
echo "======== start clean docker containers logs ========"
logs=$(find /var/lib/docker/containers/ -name *-json.log)
for log in $logs
do
echo "clean logs : $log"
cat /dev/null > $log
done
echo "======== end clean docker containers logs ========"
echo "======== start clean docker overlays logs ========"
logs=$(find /var/lib/docker/overlay2/ -name *.log)
for log in $logs
do
echo "clean logs : $log"
cat /dev/null > $log
done
echo "======== end clean docker overlays logs ========"
2. 将上述清除命令和日志文件清理脚本添加到该文件中。
3. 保存并运行该脚本。
参考资料
以下是一些相关的参考资料链接,以供进一步阅读和参考:
- Docker官方文档:https://docs.docker.com/engine/reference/commandline/system_prune/
- Docker清理工具:https://github.com/spotify/docker-gc
- Docker磁盘使用情况统计工具:https://github.com/wagoodman/dive
希望这篇经验分享能够帮助你在Docker清理磁盘空间方面有所帮助!如果你有任何问题或建议,请随时留言交流。
#Docker #磁盘空间 #清理