前言
Docker 容器跑久了,其产生的日志可能会占用比较多的空间,如果你跟我一样,使用的小水管级的服务器,很容易就爆了,此时就需要清理一下,今天恰巧遇到这种情况,具体如下图:
从上图可知,空间使用率已经 100% 了,这些数据主要集中在 docker 的 overlay2 上,借此清理 Docker 的机会,回顾一下 Docker 相关的一些知识。
查看 Docker 空间占用
有了 Docker,多数情况下,我们可以不再需要过于关心环境问题,但也付出了一些代价,占用空间便是其中一点。
通过下面命令,可以知道 Docker 占用空间的情况:
docker system df
该命令列出了 docker 使用磁盘的 4 种类型:
Images: 所有镜像占用的空间,包括拉取的镜像、本地构建的镜像
Containers: 运行中的容器所占用的空间(没运行就不占空间),其实就是每个容器读写层的空间
Local Volumes: 本地数据卷的空间
Build Cache: 镜像构建过程中,产生的缓存数据
对我而言,这个命令我还会加上 - v 参数,即 docker system df -v
,效果如下图:
这图我主要看的信息就是哪些容器、数据卷是没有被使用的,此时可以通过下面命令清理 Docker 占用的空间。
docker system prune -a
该命令会删除暂停中的容器、没有关联容器的镜像、没有 tag 的镜像、没有被使用的数据卷,简单而言,没有在 run 或被使用的东西都被清理掉,注意,如果你有一些暂时暂停的容器,这个命令也会将其清理掉。
为了深入理解上述命令的作用,先讨论一下在使用 docker 镜像创建容器时,docker会创建哪些目录:
我们使用 docker 镜像创建容器时,docker会创建一些目录,如:
/var/lib/docker/containers/<容器ID>
目录,如果容器使用了默认的日志模式,那么该容器的日志会以 JSON 形式保存在此目录下。<