清理docker 无用资源
当 Docker 容器的 overlay 文件系统满了时,通常是因为容器或镜像占用了过多的存储空间。以下是解决这个问题的步骤:
- 检查 Docker 存储使用情况
- 运行以下命令查看 Docker 使用的磁盘空间:
docker system df
输出会显示:
• 镜像(Images)占用的空间
• 容器(Containers)占用的空间
• 卷(Volumes)占用的空间
• 构建缓存(Build Cache)
2. 清理未使用的资源
2.1 删除停止的容器
停止的容器可能占用大量空间:
docker container prune -f
2.2 删除未使用的镜像
清理未被使用的 Docker 镜像:
docker image prune -af
2.3 删除未使用的卷
清理无用的 Docker 卷:
docker volume prune -f
2.4 清理构建缓存
清理 Docker 构建缓存:
docker builder prune -f
2.5 删除所有不必要的资源
一次性清理所有未使用的资源:
docker system prune -af --volumes
3. 检查 Overlay 目录
Docker 的 overlay 文件系统通常位于 /var/lib/docker/overlay2。可以检查这个目录的大小:
du -sh /var/lib/docker/overlay2/*
删除不必要的层或清理空间:
1. 如果某些层不再使用,可以通过删除相关容器或镜像来清理。
2. 删除无效的缓存文件:
sudo rm -rf /var/lib/docker/overlay2/<layer-id>
4. 增加存储分区
如果清理后仍然空间不足,可以尝试增加存储空间。
4.1 修改 Docker 存储路径
1. 停止 Docker 服务:
sudo systemctl stop docker
2. 将 /var/lib/docker 迁移到更大的磁盘:
sudo mv /var/lib/docker /new/path/docker sudo ln -s /new/path/docker /var/lib/docker
3. 重启 Docker:
sudo systemctl start docker
4.2 增加分区大小
如果您的服务器允许扩展分区:
• 对云环境:使用云平台扩展卷大小。
• 对物理服务器:调整分区大小并重新挂载。
5. 检查和限制日志大小
Docker 容器的日志文件可能占用大量空间。可以限制日志大小:
1. 创建或编辑 /etc/docker/daemon.json 文件:
{ "log-driver": "json-file", "log-opts": { "max-size": "10m", "max-file": "3" } }
2. 重启 Docker 服务:
sudo systemctl restart docker
6. 检查占用过大的容器
运行以下命令查看各容器的存储占用情况:
docker ps --size
如果某个容器占用空间过大,可以停止并重新创建:
docker stop <container-id> docker rm <container-id>
7. 优化镜像和容器
1. 减小镜像大小:
• 使用较小的基础镜像(如 alpine)。
• 清理构建中的临时文件(rm -rf /tmp/*)。
2. 定期清理旧容器和镜像:
• 使用自动化工具,如 cron 或脚本,定期运行清理命令。
取自chatgpt 问答