docker - 容器磁盘空间管理

一、日志管理

删除日志
在linux上,容器日志一般存放在 /var/lib/docker/containers/container_id/ 下, 以json.log结尾,找到这些文件,删除即可,需要注意的是如果容器处在运行状态,使用 rm -rf 方式删除日志后,通过 df -h 会发现磁盘空间并没有释放,原因是在Linux或者Unix系统中,通过 rm -rf 或者文件管理器删除文件,将会从文件系统的目录结构上解除链接(unlink);如果文件此时是被打开的(有一个进程正在使用),那么进程将仍然可以读取该文件,磁盘空间也一直被占用;所以通过rm -rf删除日志时需要重启docker,以释放资源,这样非常不方便。

所以清理docker日志的正确方法是

cat /dev/null > *-json.log

从根本上解决Docker容器日志空间占用问题#
通过以上两种方式清理之后,随着时间的推移,容器日志又会逐渐增大,可谓指标不治本,要从根本上解决问题,需要限制容器服务的日志大小上限;这个通过修改docker的配置文件来实现

在docker的配置文件/etc/docker/daemon.json(默认路径)中添加以下内容即可

"log-opts": {
"max-size": "500m",
"max-file": "3"
}

max-size=500m,意味着一个容器日志大小上限是500M
max-file=3,意味着一个容器有三个日志,分别是id+.json、id+1.json、id+2.json
重启docker进程

systemctl daemon-reload
systemctl restart docker
需要注意的是在这里设置的日志大小,只对新建的容器有效。

二、磁盘空间管理

docker system df命令,类似于Linux上的df命令,用于查看Docker的磁盘使用情况:

 docker system prune命令可以用于清理磁盘,删除关闭的容器、无用的数据卷和网络,以及dangling镜像(即无tag的镜像)。docker system prune -a命令清理得更加彻底,可以将没有容器使用Docker镜像都删掉。注意,这两个命令会把你暂时关闭的容器,以及暂时没有用到的Docker镜像都删掉了……所以使用之前一定要想清楚吶。

删除所有关闭的容器:
docker ps -a | grep Exit | cut -d ' ' -f 1 | xargs docker rm

删除所有dangling镜像(即无tag的镜像):
docker rmi $(docker images | grep "^<none>" | awk "{print $3}")

删除所有dangling数据卷(即无用的Volume):
docker volume rm $(docker volume ls -qf dangling=true)

参考:

http://dockone.io/article/3056

https://www.cnblogs.com/wiseo/p/13035896.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Docker-squash是一种用于压缩Docker镜像的工具。在Docker容器中,每个镜像层都会占用一定的磁盘空间。随着镜像层数的增加,磁盘占用量将逐渐增加,降低了存储效率。 Docker-squash的作用就是将多个镜像层压缩为一个单独的镜像层,通过合并层的方式来减少磁盘占用。当我们完成一系列的操作后,我们可以使用docker-squash命令将镜像层压缩成一个新的镜像层,以达到精简镜像大小的目的。 使用docker-squash,可以帮助我们优化和精简Docker镜像的大小,减少网络传输、存储和部署的时间。在一些场景下,我们可能会使用多个基础镜像来构建应用程序,随着构建过程中的不断叠加镜像层,应用程序的镜像会变得很大。docker-squash可以将多个镜像层合并为一个,大大减小镜像的大小,提高应用程序部署的效率。 需要注意的是,使用docker-squash有一定的风险。由于镜像层的合并,可能会丢失某些文件或不可逆转的变化。因此,在使用docker-squash之前,我们需要仔细评估已有镜像的依赖关系和正常运行的必要文件,以确保不会影响应用程序的正确性和稳定性。 总之,docker-squash是一个能够压缩Docker镜像的工具,可以将多个镜像层合并为一个,从而减小镜像的大小,提高存储和部署的效率。使用时需要注意合并过程可能带来的风险,确保应用程序的正常运行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值