服务器中的 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 占用的空间:

  1. 清理未使用的容器:

    使用以下命令列出未运行的容器,然后删除它们:

       docker ps -a | grep 'Exited' | awk '{print $1}' | xargs docker rm
  2. 清理未使用的镜像:

    列出未被任何容器引用的镜像并删除它们:

       docker images | grep '<none>' | awk '{print $3}' | xargs docker rmi
  3. 清理不再需要的数据卷:

    数据卷是容器持久性数据的存储地点,如果有不再使用的数据卷,可以使用以下命令清理它们:

       docker volume ls -qf "dangling=true" | xargs docker volume rm
  4. 使用 Docker 自带的系统清理工具:

    Docker 18.09 版本以后提供了 docker system prune 命令,它可以一次性清理未使用的容器、镜像、数据卷等资源。运行以下命令:

       docker system prune -a

    这将清理所有未使用的资源,包括不常用的镜像,但请注意,这将删除所有未使用的东西,包括您可能偶尔需要的资源。

  5. 调整日志设置:

    Docker 默认会保存容器的日志,这也可能占用大量空间。您可以限制 Docker 日志的大小或定期清理旧日志,以减少磁盘空间占用。

  6. 确保配置合理:

    如果您的应用程序有特定的配置需要,确保 Docker 配置与之匹配。例如,可以限制容器的存储配额,避免不必要的资源占用。

注意:在清理 Docker 资源之前,请确保您了解哪些资源是安全可删除的,以免删除了必要的数据。清理操作可能会影响正在运行的应用程序,因此请谨慎操作。