作者信息:https://home.cnblogs.com/u/huangjiabobk

在运维工作中,Docker怎么清理容器磁盘空间?

在运维工作中,清理 Docker 容器的磁盘空间是一个常见的任务,因为随着时间的推移,未使用的镜像、容器、卷和网络会占用大量磁盘空间。以下是一些清理 Docker 磁盘空间的常用方法和最佳实践:

1. 清理未运行的容器

未运行的容器会占用磁盘空间,可以通过以下命令清理:

1.1 删除所有未运行的容器
docker container prune
  • 这个命令会删除所有未运行的容器。如果需要确认删除,可以加上 -f 参数强制删除。
1.2 删除指定的容器

如果只想删除某个特定的容器,可以使用:

docker rm <container_id>
1.3 删除所有容器(包括正在运行的)

如果需要清理所有容器(包括正在运行的),可以使用:

docker rm -f $(docker ps -aq)
  • -f 强制停止并删除容器
  • docker ps -aq 列出所有容器的 ID
2. 清理未使用的镜像

未使用的镜像也会占用大量磁盘空间,可以通过以下命令清理:

2.1 删除所有未使用的镜像
docker image prune -a
  • -a 参数会删除所有未被容器使用的镜像。
2.2 删除指定的镜像

如果只想删除某个特定的镜像,可以使用:

docker rmi <image_id>
  • 如果镜像被容器使用,需要先删除容器。
2.3 删除悬空镜像

悬空镜像(即没有标签的镜像)可以通过以下命令清理:

docker image prune
  • 这个命令只会删除悬空镜像。
3. 清理未使用的卷

Docker 卷(Volume)用于持久化数据,未使用的卷也会占用磁盘空间。

3.1 删除所有未使用的卷
docker volume prune
  • 这个命令会删除所有未被容器使用的卷。
3.2 删除指定的卷

如果只想删除某个特定的卷,可以使用:

docker volume rm <volume_name>
4. 清理未使用的网络

Docker 网络也会占用磁盘空间,尤其是自定义网络。

4.1 删除所有未使用的网络
docker network prune
  • 这个命令会删除所有未被容器使用的网络。
4.2 删除指定的网络

如果只想删除某个特定的网络,可以使用:

docker network rm <network_name>
5. 使用 docker system prune 一键清理

Docker 提供了一个强大的命令,可以一次性清理未使用的容器、镜像、卷和网络:

5.1 清理所有未使用的资源
docker system prune
  • 这个命令会删除所有未使用的容器、镜像(包括悬空镜像)、卷和网络。
5.2 强制清理所有资源

如果需要更彻底地清理,可以加上 -a 参数:

docker system prune -a
  • -a 参数会删除所有未被容器使用的镜像,包括有标签的镜像。
6. 清理 Docker 的底层存储

Docker 的底层存储(如 /var/lib/docker)可能会积累大量未清理的数据。如果需要清理底层存储,可以考虑以下方法:

6.1 停止 Docker 服务并清理底层存储
  1. 停止 Docker 服务:

    sudo systemctl stop docker
  2. 清理底层存储:

    sudo rm -rf /var/lib/docker/*
  3. 重新启动 Docker 服务:

    sudo systemctl start docker
  • 注意:这种方法会删除所有 Docker 数据,包括镜像、容器、卷和网络。使用前请确保已经备份了重要数据。
7. 定期清理

为了避免磁盘空间被占用,建议定期运行清理命令。可以通过以下方式设置定时任务:

7.1 使用 cron 定时清理
  1. 编辑 crontab 文件:

    crontab -e
  2. 添加定时任务,例如每天凌晨清理:

    0 0 * * * /usr/bin/docker system prune -f
8. 监控磁盘使用情况

定期监控 Docker 的磁盘使用情况可以帮助及时发现空间不足的问题。可以使用以下命令查看 Docker 的磁盘使用情况:

docker system df
  • 这个命令会显示容器、镜像、卷和网络的磁盘使用情况。
9. 我的实践
  1. 定期清理:建议每周或每月运行一次 docker system prune 命令,以保持磁盘空间的整洁。
  2. 使用轻量级镜像:尽量使用小型基础镜像(如 alpine)来减少镜像大小。
  3. 清理构建缓存:如果使用 Docker 构建镜像,可以使用 --no-cache 参数来避免缓存占用空间。
  4. 合理规划卷的使用:避免在卷中存储不必要的数据,定期清理不再需要的卷。

综上所述,通过以上方法,可以有效地清理 Docker 的磁盘空间,确保系统的稳定运行。

posted @   黄嘉波  阅读(25)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
历史上的今天:
2024-02-18 在k8S中,容器内日志是怎么采集的?
2024-02-18 在k8S中,Helm优缺点是什么?
2024-02-18 在k8S中,flannel和calico的作用和区别是什么?
2024-02-18 在k8S中,QoS作用是什么?
2024-02-18 在k8S中,Master节点高可用是如何做的?
版权声明:原创作品,谢绝转载!否则将追究法律责任。--作者 黄嘉波
点击右上角即可分享
微信分享提示