清理磁盘空间
docker system df:查看Docker的磁盘使用情况
[root@iZwz9f1ba8y91wed647jhlZ ~]# docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 9 7 1.863GB 248.9MB (13%)
Containers 35 0 411.2MB 411.2MB (100%)
Local Volumes 1 1 0B 0B
Build Cache 0 0 0B 0B
Docker镜像占用了1.863GB磁盘,Docker容器占用了411.2MB磁盘,Docker数据卷占用了0B磁盘。\
docker system prune命令可以用于清理磁盘,删除关闭的容器、无用的数据卷和网络,以及dangling镜像(即无tag的镜像)。
docker system prune -a命令清理得更加彻底,可以将没有容器使用Docker镜像都删掉。注意,这两个命令会把你暂时关闭的容器,以及暂时没有用到的Docker镜像都删掉了……所以使用之前一定要想清楚吶。
[root@iZwz9f1ba8y91wed647jhlZ ~]# docker system prune
WARNING! This will remove:
- all stopped containers
- all networks not used by at least one container
- all dangling images
- all dangling build cache
Are you sure you want to continue? [y/N] y
Deleted Containers:
816ad463220933d62d274f60fb115a589bedfb7ce01f3a76f1c73fe1ada45b9a
... ...
7544f57d3a0dbbfb14219ce33e3705c6b01e7a47f412d9dbc5f478a55a01b329
Total reclaimed space: 411.2MB
[root@iZwz9f1ba8y91wed647jhlZ ~]# docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 9 0 1.863GB 1.863GB (100%)
Containers 0 0 0B 0B
Local Volumes 1 0 0B 0B
Build Cache 0 0 0B 0B
手动清理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)
容器的日志
在Ubuntu上,Docker的所有相关文件,包括镜像、容器等都保存在 /var/lib/docker/ 目录中
du -hs查看当前目录下各个文件及目录占用空间大小
[root@iZwz9f1ba8y91wed647jhlZ ~]# du -hs /var/lib/docker/
2.1G /var/lib/docker/
占用2.1G磁盘
[root@iZwz9f1ba8y91wed647jhlZ ~]# du /var/lib/docker/ | sort -nr
125452 /var/lib/docker/
125040 /var/lib/docker/swarm
125000 /var/lib/docker/swarm/raft/wal-v3-encrypted
125000 /var/lib/docker/swarm/raft
236 /var/lib/docker/image/overlay2
236 /var/lib/docker/image
... ...
92G /var/lib/docker/containers/a376aa694b22ee497f6fc9f7d15d943de91c853284f8f105ff5ad6c7
筛选出大小为MB和GB级别的目录和文件,并降序排序
du -sh /var/lib/docker/ | grep [M] | sort -nr
使用truncate命令,可以将Nginx容器的日志文件“清零”
truncate -s 0 /var/lib/docker/containers/a376aa694b22ee497f6fc9f7d15d943de91c853284f8f105ff5ad6c7ddae7a53/*-jso
还可以在配置文件限制Nginx容器的日志文件大小
docker批量清除命令
删除所有镜像
[root@iZwz9f1ba8y91wed647jhlZ ~]# docker rmi $(docker images -q)
Untagged: ubuntu-with-vim-dockerfile:latest
Deleted: sha256:fa1a9007bfcb71cce60ac54bb11d2dce69235cac904abb4067f88584317db606
... ...
Deleted: sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef
[root@iZwz9f1ba8y91wed647jhlZ ~]# docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 0 0 0B 0B
Containers 0 0 0B 0B
Local Volumes 1 0 0B 0B
Build Cache 0 0 0B 0B
杀死所有正在运行的容器
docker kill $(docker ps -a -q)
删除所有已经停止的容器
docker rm $(docker ps -a -q)