清理 docker 占用从磁盘空间的常用命令

使用 docker 的好处

所有服务,包括数据库都运行在Docker里面,好处:

  • 所有服务器的配置都非常简单,只安装了Docker,这样新增服务器的时候要简单很多。
  • 可以非常方便地在服务器之间移动各种服务,下载Docker镜像就可以运行,不需要手动配置运行环境。
  • 开发/测试环境与生产环境严格一致,不用担心由于环境问题导致部署失败。

但是,使用 docker 会比较占用磁盘空间。

基本步骤

  1. 使用 df -h 查看磁盘的初始状态;
  2. 查看创建镜像的大小 docker image ls
  3. 使用 docker system df 查看docker 磁盘使用情况
  4. 执行 docker system prune 清理dangling镜像和容器以及失效的数据卷和网络。 这个命令会删除所有关闭的容器以及dangling镜像。示例中,含有3个1GB随机文件的镜像的名称被占用了,名称为:,为dangling镜像,因此会被删除。同时,所有的中间镜像也会被删除。
  5. 更进一步, 使用 docker system prune -a , 使用-a选项可以做深度清理。这时我们会看到更加严重的WARNING信息, 这个命令将清理整个系统,并且只会保留真正在使用的镜像,容器,数据卷以及网络,因此需要格外谨慎。比如,我们不能在生产环境中运行prune -a命令,因为一些备用镜像(用于备份,回滚等)有时候需要用到,如果这些镜像被删除了,则运行容器时需要重新下载。

手动清理常用命令

删除所有关闭的容器

sudo docker container prune

删除所有 dangling 镜像(即无tag镜像)

docker image prune

删除所有dangling数据卷(即无用的Volume)

docker volume prune

限制容器日志的大小

在 ubuntu 以及 centos 上docker的相关文件,包括镜像、容器等都保存在 /var/lib/docker 目录中:
du -hs /var/lib/docker
使用du命令继续查看,可以定位到真正占用这么多磁盘的目录。

使用truncate命令,可以将容器的日志文件“清零”:
truncate -s 0 /var/lib/docker/containers/a376aa694b22ee497f6fc9f7d15d943de91c853284f8f

这个可以通过配置日志的max-size来实现,下面是Nginx容器的docker-compose配置文件:

nginx:
image: nginx:1.12.1
restart: always
logging:
driver: "json-file"
options:
  max-size: "5g"

重启Nginx容器之后,其日志文件的大小就被限制在5GB.

重启 docker

清理磁盘没能成功,不妨重启一下Docker。

发布了291 篇原创文章 · 获赞 104 · 访问量 41万+

猜你喜欢

转载自blog.csdn.net/Enjolras_fuu/article/details/105099858