Docker 让运维及开发部署变得容易了,正因为容易导致不经意的就在不断添加新的 docker 映像、容器等。这些都将占用了我们系统上的很多宝贵空间,又一直在快速地增加。以此我们有必要定期做下清理Docker环境,把一些不使用的 Docker 资源清理掉节省的空间出不来。
查看本机磁盘空间大小
[root@node2 ~]# df -lh
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 1.5G 0 1.5G 0% /dev
tmpfs 1.5G 0 1.5G 0% /dev/shm
tmpfs 1.5G 9.7M 1.5G 1% /run
tmpfs 1.5G 0 1.5G 0% /sys/fs/cgroup
/dev/sda3 22G 15G 7.0G 68% /
/dev/sda1 497M 162M 335M 33% /boot
overlay 22G 15G 7.0G 68% /var/lib/docker/overlay2/1c0b949be8e9cc5539e295fe3f8065a3504b106e435390bfb3d510d2a1d8e93a/merged
overlay 22G 15G 7.0G 68% /var/lib/docker/overlay2/a4f44206f03ae0031ef35e3e639eaae46009da1903216592f221155b5c8a57b0/merged
overlay 22G 15G 7.0G 68% /var/lib/docker/overlay2/ee81279fd99b918262446b8a1e767695607fbcf3485ee182e8406d9a09deb0c2/merged
overlay 22G 15G 7.0G 68% /var/lib/docker/overlay2/84b78dd890f360405388ae5b5f63516b54fde70b816bae40498c86f3fb8076b8/merged
tmpfs 299M 12K 299M 1% /run/user/42
shm 64M 0 64M 0% /var/lib/docker/containers/9a04d4404f4fea111f9e2ad03828a2421450ec5c7dae809e83ca7dfa34df6652/mounts/shm
shm 64M 0 64M 0% /var/lib/docker/containers/a8aa68a57e00fdb31bf92475190060f3f4a1698611bbd3770e2137db71787684/mounts/shm
shm 64M 0 64M 0% /var/lib/docker/containers/567aa7e4f1b5838c5d3e21a8debfe263e1f76c129d293e600b72563e3c54ca95/mounts/shm
shm 64M 0 64M 0% /var/lib/docker/containers/c16f6b35da5d2f3e99a8aa2b3281fa036427126e018444323564c9995782a18a/mounts/shm
tmpfs 299M 0 299M 0% /run/user/0
再使用 df
命令查看磁盘的使用情况:
docker system df
返回的结果如下:
[root@node2 ~]# docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 4 4 3.051GB 110.7MB (3%)
Containers 4 4 6.725MB 0B (0%)
Local Volumes 4 4 479.6MB 0B (0%)
Build Cache 0 0 0B 0B
Reclaimable 那项
就是可以恢复的大小,它是通过从总图像大小中减去活动图像的大小来计算的。
接下来就可以使用以下方法来清理:
- 清理停止的容器:使用
docker rm
命令清理停止的容器,命令格式为:docker rm <container_id>
。 - 清理未使用的镜像:使用
docker image prune
命令清理未使用的镜像,命令格式为:docker image prune
。 - 清理无用的数据卷:使用
docker volume prune
命令清理无用的数据卷,命令格式为:docker volume prune
。 - 清理未使用的网络:使用
docker network prune
命令清理未使用的网络,命令格式为:docker network prune
。 - 清理Docker缓存:使用
docker builder prune
命令清理Docker缓存,命令格式为:docker builder prune
。 - 清理Docker日志:使用
docker logs
命令查看容器日志,确认无用日志后,使用truncate
命令清空日志文件,命令格式为:truncate -s 0 <logfile>
。
这些清理方法可以根据我们的需要进行组合使用,有效地清理Docker环境中那些无用资源,提高资源利用率和性能,节省空间。