我在 用docker安装的es使用过程中,发现内存沾满了,很难受,删除了容器和镜像后,内存还是占比了很多。发现是/var/lib/docker/volumes下面挂载了太多的数据。因为这个是我测试用的学习服务器,所以我把里面的东西全删了。【但有时候数据我们必须要使用,所以不能全删,需要指定删除,下面就是一些docker容器存储清理所需的一些命令和方法】
docker system df 【查看docker容器占用命令】
Images:所有镜像占用的空间,包括拉取下来的镜像,和本地构建的。
Containers:运行的容器占用的空间,表示每个容器的读写层的空间。
Local Volumes:容器挂载本地数据卷的空间。
Build Cache:镜像构建过程中产生的缓存空间(只有在使用 BuildKit 时才有,Docker 18.09 以后可用)
镜像是我们下载的可执行在docker容器里面的文件,比如mysql,nginx,java.jar等等
docker images 查看镜像文件
docker rmi -f 镜像id 删除镜像
容器是基于镜像打包好的一个可运行的系统。当我们在创建一个容器的时候下面两个目录就会出现数据
/var/lib/docker/containers/ID 目录所有日志都会以JSON形式保存到本机的此目录下。
/var/lib/docker/overlay2 【文件系统】基于容器文件系统保存的数据会写到本机的此目录下,
volumes数据卷,就是把容器内的数据连接到主机上的地址。
docker inspect 容器id可以查看容器挂载的目录在哪里
在对应的Mounts下面可以看到 "Destination" 是容器内目录 "Source" 是主机的目录地址
【查看当前目录下所有目录的磁盘占用情况】
du -h --max-depth=1
【删除关闭的容器、无用的数据卷和网络,以及 dangling 镜像(在构建镜像时产生的 tag 为 none 的镜像,没有和任何其他有 tag 的镜像有关联)】
docker system prune
【命令清理,该命令清理得更加彻底,可以将没有容器使用 Docker 镜像都删掉】
docker system prune -a // 谨慎操作
【查看目前在使用的volum】
docker volume ls
【删除目前没有容器使用的volume】
docker volume rm $(docker volume ls -q)
【命令可以查看某个 volume 的具体信息】
docker inspect volume名称