服务器中的 Docker 占用空间大的解决方法
运行以下命令,查看到 Docker 占用空间特别大,需要清理。
# du -h -d 1 /var/lib | sort -rh
12G /var/lib/docker
直接按照第 4 步,操作清理后,得到的数据为:
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] y
Total reclaimed space: 2.616GB
# du -h -d 1 /var/lib | sort -rh
7.8G /var/lib
7.6G /var/lib/docker
Docker 占用大量空间通常是由于容器、镜像、数据卷等积累导致的。您可以采取以下步骤来清理 Docker 占用的空间:
清理未使用的容器:
使用以下命令列出未运行的容器,然后删除它们:
docker ps -a | grep 'Exited' | awk '{print $1}' | xargs docker rm
清理未使用的镜像:
列出未被任何容器引用的镜像并删除它们:
docker images | grep '<none>' | awk '{print $3}' | xargs docker rmi
清理不再需要的数据卷:
数据卷是容器持久性数据的存储地点,如果有不再使用的数据卷,可以使用以下命令清理它们:
docker volume ls -qf "dangling=true" | xargs docker volume rm
使用 Docker 自带的系统清理工具:
Docker 18.09 版本以后提供了 docker system prune
命令,它可以一次性清理未使用的容器、镜像、数据卷等资源。运行以下命令:
docker system prune -a
这将清理所有未使用的资源,包括不常用的镜像,但请注意,这将删除所有未使用的东西,包括您可能偶尔需要的资源。
调整日志设置:
Docker 默认会保存容器的日志,这也可能占用大量空间。您可以限制 Docker 日志的大小或定期清理旧日志,以减少磁盘空间占用。
确保配置合理:
如果您的应用程序有特定的配置需要,确保 Docker 配置与之匹配。例如,可以限制容器的存储配额,避免不必要的资源占用。
注意:在清理 Docker 资源之前,请确保您了解哪些资源是安全可删除的,以免删除了必要的数据。清理操作可能会影响正在运行的应用程序,因此请谨慎操作。