Docker 数据清理指南
Docker 在使用过程中会占用大量磁盘空间。无需担心,通过以下方法可以有效地管理和回收磁盘空间。
Docker 数据管理
设置默认路径
默认情况下,Docker 容器数据存储在 /var/lib/docker/containers/ 目录下。
容器的日志可以通过 docker logs 命令访问,同时可以使用 docker logs -f 实时查看日志,类似于 tail -f 的效果。如果使用 Docker Compose,可以通过 docker-compose logs <服务名> 来查看特定服务的日志。
如果深入了解日志的存储位置,每个容器的日志默认以 json-file 格式存储在 /var/lib/docker/containers/<容器id>/<容器id>-json.log 文件中。
您可以通过以下方式修改其默认参数:
- 修改 Docker 守护进程配置
编辑 /etc/docker/daemon.json 文件(如不存在则创建):
{
"log-driver": "json-file",
"log-opts": {
# 单个日志文件最大大小
"max-size": "10m",
# 最多保留3个日志文件(轮转时删除旧文件)
"max-file": "3"
},
# 数据根目录
"data-root": "/var/lib/docker"
}
- 重新加载 Docker 服务
sudo systemctl daemon-reload
sudo systemctl restart docker
快速检查磁盘使用情况
首先查看 Docker 整体磁盘使用情况:
docker system df
常规清理操作
安全清理(推荐)
定期运行以下命令,安全删除已停止的容器、未使用的网络和悬空镜像:
docker system prune
深度清理(谨慎使用)
此命令会删除所有未关联到运行容器的镜像:
docker system prune -a
分类清理指南
镜像清理
镜像相当于应用程序的快照。查看所有镜像:
docker image ls -a
删除指定镜像:
docker image rm <name_or_id>
可同时删除多个镜像,使用空格分隔。
容器清理
容器是镜像的运行实例。查看所有容器:
docker container ls -a
停止容器:
docker container stop <name_or_id>
删除容器:
docker container rm <name_or_id>
提示:
- 可同时操作多个容器,使用空格分隔
- 使用
--rm参数启动容器可在停止时自动删除
网络清理
网络配置文件占用空间较小。查看所有网络:
docker network ls
删除网络:
docker network rm <name_or_id>
卷清理
卷用于持久化存储数据,占用空间取决于使用情况。查看所有卷:
docker volume ls
重要提醒:删除卷前务必做好数据备份!
备份方法示例
MySQL 数据库备份:
docker exec mysql /usr/bin/mysqldump -u root -pmypasswd mydb > backup.sql
文件拷贝备份:
docker cp mycontainer:/some/file ./host/directory
删除操作
删除指定卷:
docker volume rm <name>
删除未使用卷:
docker volume prune
删除所有卷(谨慎操作):
docker volume prune -a
彻底清理
一键删除所有未使用的镜像、容器、网络和卷:
docker system prune -a --volumes
添加 -f 参数可强制清除所有 Docker 数据:
docker system prune -a --volumes -f
警告:此操作将清除所有 Docker 数据,请确保已备份重要信息。
最佳实践建议
定期维护计划
#每周清理一次
0 3 * * 0 docker system prune -f
#每月深度清理一次
0 4 1 * * docker system prune -a -f --volumes
监控磁盘使用
# 添加到 crontab,每小时检查一次
0 * * * * df -h /var/lib/docker | awk 'NR==2 {if ($5 > 85) print "警告: Docker 磁盘使用率超过85%"}'
容器启动时限制资源
docker run --log-opt max-size=10m --log-opt max-file=3 --restart=unless-stopped your_image
通过合理的日志管理和定期清理,可以有效控制 Docker 对磁盘空间的占用,保持系统高效运行。
更多推荐


所有评论(0)